应用在 数据库分库 等领域:
如果我们采用取余 或者 普通hash的话.
再一次增加一台机器的过程中, 会导致大面积数据迁移问题.要不然就会出现入库不平均.
consistent hashing 就是为了解决这个问题的.
初始分配:
将所有机器通过hash算法分布在一个2^32次方的一个圆环上.
当每一次入库的时候.都会根据hash值分配到离自己最近的机器上.
新增机器后的分配策略:
新增机器只需要移动一台机器的数据就好,不需要影响全局机器.
这样就解决了所谓分库的问题. 至于为什么是2^32.. 其实这个可以是任何数.. 足够大就好. 当然相应算法要自己调整.
ps: 本图片链接自我的iteye blog. 原图扒自一篇翻译的consistent hashing的翻译论文. 原谅我当时没有做记录是哪一篇. 翻译作者可以联系我.