知识卡片

数据分布算法的三个设计目标

专业/工作 · 237.f

内容

任何分布式存储的数据分布算法,至少要同时满足三个目标:故障域隔离——同一份数据的不同副本要分散在不同的故障域,避免一次物理故障连坐多个副本;负载均衡——数据要按容量比例均匀摊在磁盘大小不一的节点上,不能有的节点闲、有的节点满;控制数据迁移量——节点加入或离开时,理想情况下只搬动与该节点直接相关的数据,其余正常节点上的数据不应被牵连。发散:这三个目标其实互相牵制——过度追求均匀分布往往会牺牲”变更时数据搬得少”这一条,CRUSH、一致性Hash等算法的差异,本质都是在这三者之间选了不同的折中点。

参考来源

《Ceph分布式存储实战》第3章《智能分布CRUSH》