利用hash(key)%N的公式 采用模运算将请求发布到不同的节点,致性哈希将整个哈希值空间组织成一个虚拟的圆环,如假设某哈希函数H的值空间为0 - (2^32)-1(即哈希值是一个32位无符号整形)
因为数据倾斜 大部分数据倾斜在一台机器负载过高因此可以设计虚拟节点,
用户数据映射在虚拟节点上,就表示用户数据真正存储位置是在该虚拟节点代表的实际物理服务器上。
“虚拟节点”的 hash 计算可以采用对应节点的 IP 地址加数字后缀的方式。例如假设 cache A 的 IP 地址为202.168.14.241 。
引入“虚拟节点”前,计算 cache A 的 hash 值:
Hash(“202.168.14.241”);
引入“虚拟节点”后,计算“虚拟节”点 cache A1 和 cache A2 的 hash 值:
Hash(“202.168.14.241#1”); // cache A1
Hash(“202.168.14.241#2”); // cache A2
知识源
http://www.zsythink.net/archives/1182/
https://www.cnblogs.com/moonandstar08/p/5405991.html
https://www.cnblogs.com/yixiwenwen/p/3580646.html
https://blog.csdn.net/Jerome_s/article/details/52492862
整合大神笔记,如有问题请大神帮忙修改