今天我们聊个知识点为什么Redis使用哈希槽而不是一致性哈希。
先看文章大纲,提前了解本期内容
图片
往期回顾
之前小许用图文并茂的方式用一期内容让大家快速了解了一致性哈希算法,看过的朋友应该还有印象,没看过的朋友可以点击这里看一遍《五分钟了解一致性哈希算法》。
看明白这篇一致性哈希算法基础,会对本期内容有更好的认识和对比性。
这里我们再简单回顾下:
一致性哈希算法就很好地解决了分布式系统在扩容或者缩容时,发生过多的数据迁移的问题。
算法是对 2^32 进行取模运算的结果值虚拟成一个圆环,环上的刻度对应一个 0~2^32 - 1 之间的数值。
通过虚拟节点的方式很好的处理了数据不平衡问题。
图片
不同的计算方式
不知道朋友们记不记得Redis Cluster的实现,也是用了Hash的方式将键值按照一定算法分配到各个节点的,但是却没有使用一致性哈希算法,而是引入了哈希槽的概念!
这是为什么呢?