喃喃自语

一致性hash

2018-09-18  本文已影响9人  空即是色即是色即是空

问题


回答

pos = hash(obj) % N

由于hash算法的独特性,保证了取模的随机性;
然而又引出另一个问题,如果新增一台机器或者宕机一台,pos已经固定的obj,会因为N的变动受到影响

pos = hash(obj) % (N + 1)
pos = hash(obj) % (N - 1)

此时,一致性hash粉墨登场。
一致性哈希,使用一致性哈希环的数据结构,将obj于pos都分布在这个环上。
如果obj没有命中任何一个pos,则在环上顺时针寻找最近的一个pos。
这样做的效果,就会让新增或者减少机器时,只会影响到一台机器。
而如果算法中甚至做一些冗余的做法,会让影响降低到更小。

上一篇下一篇

猜你喜欢

热点阅读