目录
前言
一致性哈希要解决的问题
是一种特殊的哈希算法,目的是解决分布式缓存的问题。 在移除或者添加一个服务器时,能够尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系。一致性哈希解决了简单哈希算法在分布式哈希表( Distributed Hash Table,DHT) 中存在的动态伸缩等问题 [2] 。
教程推荐
推荐视频:https://www.bilibili.com/video/BV1Hs411j73w?from=search&seid=15440579016610429499
其实,一致性哈希算法也是使用取模的方法,只是,刚才描述的取模法是对服务器的数量进行取模,而一致性哈希算法是对2^32取模,什么意思呢?我们慢慢聊。
摘自很不错的文章:http://www.zsythink.net/archives/1182/
https://www.cnblogs.com/lpfuture/p/5796398.html
其中在查找时还看到一篇比较可以文章:
https://blog.csdn.net/cywosp/article/details/23397179/
详解
一致性Hash算法背景
现在一致性hash算法在分布式系统中也得到了广泛应用,研究过memcached缓存数据库的人都知道,memcached服务器端本身不提供分布式cache的一致性,而是由客户端来提供,具体在计算一致性hash时采用如下步骤:
- 首先求出memcached服务器(节点)的哈希值,并将其配置到0~232的圆(continuum)上。
- 然后采用同样的方法求出存储数据的键的哈希值,并映射到相同的圆上。
- 然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。如果超过232仍然找不到服务器,就会保存到第一台memcached服务器上。
![](https://i-blog.csdnimg.cn/blog_migrate/9f9e65aadb913998c415e596b2e95ab1.png)
从上图的状态中添加