一致性哈希算法的基本原理-如何解决哈希倾斜问题

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/aa5305123/article/details/83097450

在日常工作中,经常有这样的情况,我们需要做hash,散列开数据到不同的区或节点。目标要的结果是要均匀散列,避免某个节点积累大量的数据,出现倾斜情况。

比如目前有N台机器,过来的数据key,需要做散列key%N,分发到对应的节点上。

一致性哈希算法原理

 为了解决hash倾斜难题,一致性算法是这样的,节点和节点形成一个环。比如

A->B->C->A,这样一个环。数字hash后落在环上,而不是落到某个node。比如落在a~b node之间,通过顺时针转,这个数字归b节点管。

但是如果节点很少,同样容易出现倾斜,负载不均衡问题。所以一致性哈希算法,引入了虚拟节点,在整个环上,均衡增加若干个节点。比如a1,a2,b1,b2,c1,c2,a1和a2都是属于A节点的。

通过让闭环上的节点增加,来平衡各个节点散列的值。

展开阅读全文

没有更多推荐了,返回首页