构建Ring的过程

一 介绍
Ring是swift中非常核心的组件,它决定着数据如何在集群中分布。
Swift根据设置的partition_power决定集群中的分区数量(2的partition_power次方),并根据一致性哈希算法将分区分配到不同的node上,并将数据分布到对应的分区上。

二 新的Ring创建的过程
1 ring-builder根据device weight计算出每个设备上应该被分配的分区的数量。(2的partition_power次方得到分区总数,再根据weight和设备数进行分配)
2 ring-builder将每个分区的副本分配到对应的device上。

三 根据一个old ring创建new ring的过程
1 重新计算每个device上的分区数量;
2 收集需要被重新分配的分区:
  将被移除的device上的所有分区添加到gathered list;
  将由于添加新device而产生的需要被分配出去的分区添加到gathered list;
  将所有device上经过重新分配后多出来的分区添加到gathered list。
3 使用上述“新的Ring创建的过程”的方法分配gathered list中的分区到devices中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值