频道栏目
IT货架 > > 正文
关于一致性Hash算法(ConsistentHash)
网友分享于:Jun 12, 2018 11:56:00 PM    来源: IT货架   

      在分布式缓存系统如memcached中,如果有N台memcached服务器,要存储一个对象的话,可以对其进行Hash取余的运算决定其存储在哪一个cache服务器上,如果某一天感觉cache服务器不够了,新增了一台cache服务器,那就会如同HashMap内部扩容一样,元素重新Hash取位置,所有的cache就会乱套了,一致性Hash算法就是解决在动态增减了cache服务器后,让cache的变动最小。
      一致性Hash算法通常是将 value 映射到一个 32 为的 key 值,也即是 0~2^32-1 次方的数值空间我们可以将这个空间想象成一个首( 0 )尾( 2^32-1 )相接的圆环,同时将cache服务器也通过hash运算将其分布在圆环上(可以利用服务器的IP进行Hash),
 

然后通过顺时针方向将value放在离其最近的cache服务器上,这样,就算动态增减了服务器,影响到的也只是圆环上一部分元素而已,从而将影响减到最小。
memcached本身不支持分布式缓存,可以对实现了一致性Hash的memcached客户端指定使用Consistent Hash,如xmemcached

广告服务联系QQ:1134687142 | 网站地图

版权所有: IT货架- 内容来自互联网,仅供用于技术学习,请遵循相关法律法规. 京ICP备11030978号-1