一致性哈希算法(consistent hashing)的一种实现
来源:互联网 发布:sketchup2017 pro mac 编辑:程序博客网 时间:2024/04/27 16:29
首先需要了解一致性哈希算法(consistent hashing):http://blog.csdn.net/cywosp/article/details/23397179/。
下面介绍支持2^32次方空间的一致性哈希算法的一种实现:
1、建立虚拟节点,最大支持2^16次方个虚拟节点:关键在于既要体现出每个实际节点的权重,还要为后续增加的节点预留虚拟节点。
2、为了满足1条件和虚拟节点分布的随机性和均衡性,可采用MD5算法:
对实际节点进行编号(IP+序列号)”192.168.10.11@1“、”192.168.10.11@2“、”192.168.10.11@3“,再进行MD5,由于MD5值是一个16位16进制数,
每四位16进制数(低四位、中低四位、中高四位、高四位)可组成一个32bit的key,所以一个编号可创建4个虚拟节点。
3、权重实现:权重越大,每个实际节点编号越多,最大序列号变大。
4、预留虚拟节点:为后续节点假设权重,假设最大支持32台服务器,现在有10台在线,每台权重为1,那么每台建设虚拟节点个数为(2^16/4)*(1/32),
这个值也是这个节点的最大序列号值;采用MD5算法,也可以保证现在这10台的均衡性。
5、将虚拟节点信息(真实节点信息和虚拟节点key)放入红黑树,便于查找;可首先建好2^32次方虚拟节点,空的虚拟节点可采用链表存储,为新节点准备。
6、当某一对象需要调度到实际节点时,对该对象ID进行MD5算法,并只取低四位作为key,通过红黑树,查找到与它最接近但不大于它的虚拟节点信息,从中获取实际节点。
7、该实现可保证:
a、各个节点的均衡性。
b、当删除一节点时,剩下节点的全部原有数据依旧都能够映射到原节点上,并且剩下节点分担了删除节点的原有数据。
c、当添加一个节点时,映射到老节点的数据都是原有数据,但老节点的部分原有数据被新节点分担,并且老节点和新节点依旧保持均衡性。
- 一致性哈希算法(consistent hashing)的一种实现
- Go语言实现一致性哈希(Consistent Hashing)算法
- 一致性哈希算法及其实现(Consistent Hashing)
- 一致性哈希算法(Consistent Hashing)
- Consistent Hashing 一致性哈希算法
- 一致性哈希算法(consistent hashing)
- 一致性哈希算法(Consistent Hashing)
- 一致性哈希算法 consistent hashing
- 一致性哈希算法(Consistent Hashing)
- 一致性哈希算法(Consistent Hashing)
- 一致性哈希算法(Consistent Hashing)
- 一致性哈希算法 - Consistent Hashing
- Consistent Hashing一致性哈希算法
- 一致性哈希算法(Consistent Hashing)
- 一致性哈希算法(Consistent Hashing)
- 一致性哈希算法(consistent hashing)
- 一致性哈希算法(Consistent Hashing)
- 一致性哈希算法 - Consistent Hashing
- 一个比代理更好的方法
- rcp开发jar导入注意事项!!!!!!!!!!!!
- 牛人主页(主页有很多论文代码)
- Java3.1 循环
- 2016太原网络营销师【郭文军】分析自媒体中百科的价值与操作?
- 一致性哈希算法(consistent hashing)的一种实现
- 068_多重集组合数
- 网桥工具 bridge-utils 使用
- 一键排班软件开发用到的sql语句
- 关于网络通信的总结
- C/C++多种方法获取文件大小
- Window和WindowManager小结
- protocol类似@class方式使用, 能提高效率, 但是有警告.
- 内存分段机制与分页机制