分布式数据库系统如何做到平滑缩扩容?

idea at 
分布式数据库系统如何做到平滑缩扩容?的配图
分布式数据库系统的缩扩容能力(后面也称迁移)是最基础最基本的特性, 但是, 要实现平滑扩容并不容易, 需要包括服务端, 客户端共同完成, 这两者只要缺少任何一方的参与和配合, 便绝不可能实现平滑扩容.平滑迁移要解决的问题, 本质上就是故障容错处理.客户端请求重试请求重试是故障容错的最基础要求, 因为你永远无法避免遇到故障. 遇到故障时, 要么报错, 要么重试. 既然我们追求的是平滑, 那么, 一旦遇到故障, 绝对不能向上层反馈, 只能重试.重试要配合服务发现, 不然故障点一直不恢复的话, 重试也没用.重试策略的关键在于识别出可重试的故障, 对于某些故障, 如网络故障, 客户端无法确保请求到底有……