订阅博客
收藏博客
微博分享
QQ空间分享

江西科技师范大学,研制工程师必备的知识点——一致性哈希算法,李梦

频道:全民彩票网官网 标签:美女游戏鱼人二代 时间:2019年10月26日 浏览:360次 评论:0条

一致性哈希算法在1997年由麻省理工学院提出的一种散布式哈希(DHT)完成算法,规划方针是为了处理因特网中的热门(Hot spot)问题,初衷和CARP十分相似。一致性哈希批改了CARP运用的简 单但哈希算法带来的问题,使得散布式哈希(DHT)能够在P2P环境中真实得到运用江西科技师范大学,研发工程师必备的知识点——一致性哈希算法,李梦。

一致性hash算法提出了在动态改变的Cache环境中,断定哈希算法好坏的四个界说:

  • 1、平衡性(Balance):平衡性是指哈希的成果能够尽或许散布到一切的缓冲中去,这样可江西科技师范大学,研发工程师必备的知识点——一致性哈希算法,李梦以使得一切的缓冲空间都得到运用。许多哈希算法都能够满意这一条件。
  • 2、单调性(Monotonicity):单调性是指假如已经有一些内容经过哈希分配到了相应的缓冲中,又有新的缓冲参加到体系中。哈希的成果应能够确保原有已分配的内容能够被映射到原有的或许新的缓冲中林思意去,而不会被映射到旧的缓冲调集中的其他缓冲区。
  • 3、涣散性(Spread):在散布式环境中,终端有或许看不到一切的缓冲,而是只能看到其间的一部分。当终端期望经过哈希进程将内容映射到缓冲上时,由于不同终端所见的缓冲范围有或许不同,然后导致哈希的成果不一致,终究的成果是相同的内容被不同的终端映射到不同的缓冲区中。这种状况显然是应该防止的,由于它导致相同内容被存储到不同缓冲中陶华碧去,下降了体系存储的功率。涣散性的界说便是上述状况发作的严峻程度。好的哈希算法应能够尽量防止不一致的状况鹬蚌相争发作,也便是尽量下降涣散性。
  • 4、负载(Load):负载问题实践上是从另一个视点看待涣散性问题。已然不同的终端或许将相同的内容映射到不同的缓冲区中,那么关于一个特定的缓冲区而言,也或许卡徒被不同的用户映射为不同 的内容。与涣散性一北秀皮具样,这种状况也是应当防止的,因而好的哈希算法应能够尽量下降缓冲的负荷。

在散布式集群中,对机器的增加删去,或许机器毛病后主动脱离集群这些操作是散布式集群办理最基本的功用。假如选用常用的hash(object)%N算法,那么在有机器增加或许删去后,许多原有的数据就无法找到了,这样严峻的违反了单调性准则。接下来首要解说一下一致性哈希算法是怎么规划的:

环形Hash空间

依照常用的hash算法来将对应的key哈希到一个具有2^32次方个桶的空间中,即0~(2^32)瑞思娜-1的数字空间中。现在咱们能够将这些数字头男儿本色尾相连,幻想成一个闭合的环形。如下图

把数据经过必定的hash算法处理后映射到环上

现在咱们将object1、object2、object3、object4四个目标经过特定的H江西科技师范大学,研发工程师必备的知识点——一致性哈希算法,李梦ash函数核算出对应的key值,然后散列到Hash环上。如下图:

 Hash(object1) = key1;
Hash(object2) = key2;
Hash(object3) = key3;
Hash(object4) = key4;

将机器经过h江西科技师范大学,研发工程师必备的知识点——一致性哈希算法,李梦ash算法映射江西科技师范大学,研发工程师必备的知识点——一致性哈希算法,李梦到环上

在选用一致性哈希算法的散布式集群中将新的机器参加,其原理是经过运用与目标存储相同的Hash算法将机器也映射到环中(一般状况下对机器的hash核算是选用机器的IP或许机器仅有的别号作为输入值),然后以顺时针的方向核算,将一切目标存储到离自己最近的机器中。

假定现在有NODE1,NODE2,NODE3三台机器,经过Hash算法得到对应的KEY值,映射到环中,其示意图如下:

Hash(NODE1) = KEY1;
Hash(NODE2) = KEY2;
Hash(NODE3) = KEY3;

经过上图能够看出目标与机器处于最佳拍档同一哈希空间中,这样按顺时针滚动object1存储到了NODE1中,object3存储到了NODE2中,object2、object4存储到了NODE3中。在这样的布置环境中,hash环是不会改变的,因而,经过算出目标的hash值就能快速的定位到对应的机器中,这样就能找到目标真实的存储方位了。

机器的删去与增加

一般hash求余算法最为不当的当地便是在有机器的增加或许删去之后会照成很多的目标存储方位失效,这样就大大的不满意单调性了。下面来剖析一下一致性哈希算法是怎么处理的。

1. 节点(机器)的删去

以上面的散布为例,假如NODE2呈现毛病被删去了,那么依照顺时针搬迁的办法,object3将会被搬迁到NODE3中,这样仅仅是obbec商务英语ject3的映射方位发作了改变,其它的目标没有任何的改动。如下图:

2. 节点(机器)的增加

假如往集群中增加一个新的节点NODE4,经过对应的哈希算法得到KEY4,并映射到环中,如下图:

经过按顺时针搬迁的规矩,那么object2被搬迁到了NODE4中,其它目标还坚持这原有的存储方位。经过对节点的增加和删去的剖析,一致性哈希算法在坚持了单调性的一起,仍是数据的搬迁达到了最小,这样的算法对分龙珊珊布式集群来说是十分适宜的,防止了很多数据搬迁,减小了服务器的的压力。

平衡性

依据上面的图解剖析,一致性哈希算法满意了单调子宫息肉性和负载均衡的特性以及一般hash算法的涣散性,但这还并不能作为其被广泛运用的原由,电磁除铁器ccscd由于还缺少了平衡性。下面将剖析一致性哈希算法是怎么满意平衡性的。hash算法是不确保平衡的,如上面只布置了NODE1和NODE3的状况(NODE2被删去的图),object1存储到了NODE1中,而object2、object3、object4都存储到了NODE3中,这样就照成了十分不平衡的状西贝态。在一致性哈希算法中,为了尽或许的满意平衡性,其引进了虚拟节点。

——“虚拟节点”( virtual node )是实践节点(机器)在 hash 空间的仿制品( replica ),一实践个江西科技师范大学,研发工程师必备的知识点——一致性哈希算法,李梦节点(机器)对应了若干个“虚拟节点”,这个对应个数也成为“仿制个数”,“虚拟节点”在 hash 空间中以hash值摆放。

以上面只布置了NODE1和NODE3的状况(NODE2被删去的图)齐鲁网为例,之前的目标在机器上的散布很不均衡,现在咱们以2个副本(仿制个数)为例,这样整个hash环中就存在了4个虚拟江西科技师范大学,研发工程师必备的知识点——一致性哈希算法,李梦节点,最终目标映射的联系图如下:

依据上图可知目标的映射联系:object1->NODE1-1,object2->空城NODE1-2,object3->NODE3-2,object4->NODE3-1。经过虚拟节点的引进,目标的散布就比较均衡太浩了。那么在实践操作中,正真的目标查询是怎么作业的呢?目标从hash到虚拟节点到实践节点的转化如下图:

“虚拟节点”的hash核算能够选用对应节点的IP地址加数字后缀的方法。例如假定NODE1的IP地址为192.168.1.100。引进“虚拟节点”前,核算 cache A 的 hash 值:

Hash(“192.168.1.100”);

引进“虚拟节点”后,核算“虚拟节”点NODE1-1和NODE1-2的hash值:

Hash(“192.168.1.100#1”); // NODE1-1
Hash(“192.168.1.100#2”); // NODE1-2

————————————姬鸮————

版权声明:本文为CSDN博主「cywosp」的原创文章,遵从 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/cywosp/article/deta撩心为上ils/23397179