数据分片及路由

数据量太大,不可能做被一个数据包进行计算,所以对数据进行分片
1.分片在不同机器上
2.为了高可用性需要多副本
所以需要机器以及数据路由

一致性哈希(chord是一其中种方式)

chord

每个节点使用拉链的方法(路由表),存储接下来的第2^i个节点。使得每个节点的查询复杂度均为O(lg n)。
是一个双向拉链

新增节点

(1)找到新节点的位置
(2)将新节点插入,并且更改前驱后继
(3)将后继节点部分数据转移到新节点
但是对于高并发应用,2,3均可能出现问题,引入稳定性检测
(1)找到新节点的位置,更新新插入节点的后继
稳定性检测
(2)若Ns是Nn的后继,则直接插入并转5
(3)若Ns不是Nn的后继,Nn记Ns的pre,Nx为自己的后继
(4)若Nx的pre为空或Nc在Nx及其pre之间则Nx的前驱记为Nc。否则Nx的pre记为Nc的next,继续4。
(5)Nx转移数据到Nc

离开节点

若是正常离开则通知前驱(?)以及后继进行稳定性检测
异常离开使用副本形式保证一致性

虚拟节点

由于
1.节点随机可能导致负载不均
2.机器性能不同,负载在逻辑上却是相同的

引入虚拟节点,将一个物理节点虚拟化为多(不同)个逻辑节点

总结

引入哈希空间作为解耦合层,使得资源与机器解耦合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值