一:概述
当数据量增长到一定程度,往往通过存储节点扩容,来分担数据。当加入新节点后,数据在分配时,如何保证数据既能正确读写路由,又能让数据迁移变得简单快捷?大家会一口同声的说道采用一致性哈希方案。但是,生产与实践中,redis最新版本已经放弃对一致性哈希的应用,提出了哈希槽(Hashslot)的概念,以下将通过两者的分析与对比,领略一下哈希槽的魅力。(最新信息请关注微信公众号: 白白家族)
二:分析与对比
我们先看看 一致性哈希 和 哈希槽的实现原理,才能更深入的了解。
2.1 一致性哈希算法(Consistent Hashing)
1)声明环空间:
将数组[0,1,2,… 2^32-1]形成首尾相连的环形结构,按顺时针方向组织,其中0和2^32-1在零点中方向重合,如下图圆环所示
2)分配服务节点
将服务器的ip或主机名作为关键字进行哈希取值,映射到数组圆环上,例如hash(server1)/2^32 = 1000, 例如hash(server3) /2^32= 50000, hash(server2) /2^32 = 900000, 分别映射到 数组第1000/50000/900000的位置上
</