码迷,mamicode.com
首页 > 编程语言 > 详细

关于什么是一致性hash算法

时间:2018-11-04 15:41:07      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:.com   数据迁移   查找   拓展   散列   图片   遍历   增加   分享图片   

当需要分布式缓存的时候,通过key的hash值分散数据存储hash(n)%缓存服务器台数,同时也可以快速查找数据而不用遍历所有的服务器。如下图:

技术分享图片

但是这样,当业务拓展想要增加一台服务器的话,要么缓存服务器数据全部需要重新计算存储 -----hash(n)%5 。 要么需要遍历所有缓存服务器。不够灵活。

所以就出现了一致性hash算法,来解决这样的问题。

Hash环,如下图所示:

技术分享图片

一致性Hash算法是key的hash值,对2^32取模,对服务器确定确定此数据在环上的位置(比如A,B,C,D)。

数据进来后对2^32 取模,得到一个值K1,在Hash环中顺时针找到服务器节点。

假如B服务器节点失效:

技术分享图片

如果是B失效了,将B的数据迁移至C即可,对于原本散列在A和D的数据,不需要做任何改变。

总结:一致性hash算法(DHT)通过减少影响范围的方式解决了增减服务器导致的数据散列问题,从而解决了分布式环境下负载均衡问题。

关于什么是一致性hash算法

标签:.com   数据迁移   查找   拓展   散列   图片   遍历   增加   分享图片   

原文地址:https://www.cnblogs.com/zhangjianbing/p/9903899.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!