最近在看关于NoSQL的资料,发现总是提到这个东西。这东西吧,非常简单,数据结构讲过,但是那时候一直搞不懂这是个什么玩意儿,这次结合实际环境,终于理解了这个东西。
首先,看问题和背景:
我们知道,hash算法实际上是将一个值映射到另一个值的过程,而一致性哈希则具有自己的两个特点,比如类似的MD5算法,看以看成一种32位的哈希算法,将一个字符串对应到一个32位的字符串中。我们还是看问题,假设现在需要一个负载均衡的算法,要把流量均匀的分布到后端的Cache服务器上面去。最常用的做法,当然是取用户的cookie,取服务器(n)的模,这样基本上能保持流量均分,而且能够保证用户每一次访问能够落入到同一台机器。本来也相安无事,但是,如果摘掉一台机器呢?(一台机器down机是经常的事情),或者是加1台机器,那么本来的n值发生了变化,因此所有的流量命中的机器也全部发生了变化。