发布时间:2025-11-05 13:07:50 来源:创站工坊 作者:人工智能

一致性哈希是算法一种哈希算法,就是什致性在移除或者增加一个结点时,能够尽可能小的哈希改变已存在key的映射关系尽可能少的改变已有的映射关系,一般是算法沿着顺时针进行操作,回答之前可以先想想,什致性真实情况如何处理一致性哈希将整个哈希值空间组织成一个虚拟的哈希圆环,假设哈希函数的算法值空间为0~2^32-1,整个哈希空间环如下左图所示

一致性hash的什致性基本思想就是使用相同的hash算法将数据和结点都映射到图中的环形哈希空间中,上右图显示了4个数据object1-object4在环上的云南idc服务商哈希分布图
假如有一批服务器,可以根据IP或者主机名作为关键字进行哈希,算法根据结果映射到哈希环中,什致性3台服务器分别是哈希nodeA-nodeC
现在有一批的数据object1-object4需要存在服务器上,则可以使用相同的算法哈希算法对数据进行哈希,其结果必然也在环上,什致性可以沿着顺时针方向寻找,哈希找到一个结点(服务器)则将数据存在这个结点上,这样数据和结点就产生了一对一的关联,如下图所示:

如果一台服务器出现问题,如上图中的nodeB,则受影响的是其逆时针方向至下一个结点之间的数据,只需将这些数据映射到它顺时针方向的亿华云第一个结点上即可,下左图

1566573901641
如果新增一台服务器nodeD,受影响的是其逆时针方向至下一个结点之间的数据,将这些数据映射到nodeD上即可,见上右图
假设仅有2台服务器:nodeA和nodeC,nodeA映射了1条数据,nodeC映射了3条,这样数据分布是不平衡的。引入虚拟结点,假设结点复制个数为2,则nodeA变成:nodeA1和nodeA2,nodeC变成:nodeC1和nodeC2,映射情况变成如下:

这样数据分布就均衡多了,平衡性有了很大的提高
随便看看