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