, 扭头问了我一下, 当时直接说使用 hash取模 的方式分摊数据。
接着我肯定被追问一台机器挂了怎么办, 怎么减少节点挂掉的影响, 结果是被鄙视了, 从那以后也就记住了 一致性hash 这个词....虽然工作时间也不短了, 但是现在再问我 一致性hash算法 究竟是啥, 我大概也只能回答出 一个圆环, 环里有很多虚拟节点, key hash后定位到对应的虚拟节点, 却从来没有自己动手写过一行代码....我们开始吧~
一致性hash算法
一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似...一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用....一致性hash在数据存储领域中有广泛的应用, 目的主要是减少数据倾斜问题, 在节点失效、节点增加时, 只需影响少量数据.