一致性hash算法

1.hash算法

hash算法将任意长度的二进制值,转换为较小长度的二进制值,这个小的二进制值称为hash值,hash可以校验数据的完整性。

2.一致性hash算法
(2)一致性hash算法:一致性hash算法是一种分布式hash的算法,设计目标是为了解决因特网中的hotSpot问题。

(3)一致性hash算法的具体实现。
以memcache集群的路由为例
I. 一致性hash算法通过一个叫做一致性hash环的数据结构来实现 key到缓存服务器 的内存映射

II. 定义一个hash环,范围从0-2^32,把这个hash环想象成一个闭环,数字首尾想连

III. 把key通过一定的hash算法,得到hash,映射到环上

IV. 把机器通过一定的hash算法,映射到环上

V.如图,可以看出对象key的hash值和机器的hash值在同一空间中,然后对象按照顺时针转动,寻找最近的节点,存入key1、key2存到节点3中,key3、key4存入节点2,key5存入节点1

VI.当增加节点4的时候,只是节点3到节点4这一部分数据受到影响,不会像取余算法一样,影响70%的数据存储


3.余数hash
服务器有3台,那么被取余的数就是3.
(1)根据数据取余,然后路由到对应的缓存服务器,比如1结尾的,路由到server1
2结尾的,路由到server2 , 3结尾的路由到server3,
0,1,2,3,4,5,6,7,8,9,10
0,1,2,0,1,2,0,1,2,0,1
(2)如果新增一台服务器,被取余数就是4,
0,1,2,3,4,5,6,7,8,9,10
0,1,2,3,0,1,2,3,0,1,2
可以到到从数据2以后,70%的数会受到影响。

posted @ 2017-09-18 15:15  浮白斋主人  阅读(354)  评论(0编辑  收藏  举报