Uber 对其分布式时序数据库 M3DB 的分片放置策略进行了重新设计,用固定大小的子集群替代原有的全局依赖图模型,以限制单节点故障、运维操作和集群扩容带来的影响范围。旧模型中,分片放置较为宽松,一次拓扑变更可波及 O(N) 个节点;即便在三个可用区、复制因子为 3 的条件下,单节点仍可能与多达 66.67% 的节点共享数据,导致恢复工作量大、运维只能串行执行。新方案将节点划分为固定大小的子集群,每个子集群拥有互不重叠的分片空间,副本隔离逻辑下沉至子集群内部,故障影响域因此被压缩到子集群规模内。扩容时采用贪心算法迁移分片,避免额外再平衡开销。该方案同时存在实例权重必须相等、扩容以子集群为单位、子集群大小须为副本因子整数倍等约束,并保留了原有实例级操作以兼容现有工具。
📱 每天一份 AI 前沿日报
关注公众号,每天 09:00 推送 · 不错过任何重磅