一致性哈希的介绍

适用场景:缓存集群环境下

出现背景:

1.初始阶段:通过随机存取方式进行,将一个数据随机存入集群的一台服务器中,当使用到这个缓存数据的时候,不知道从集群哪台服务器中取数据,也无法判断有没有这个数据,导致数据冗余,而且服务器数量越多,导致的存取冗余次数无法估量。

2.中期阶段:由随机转向哈希取余,首先将一个数据存入集群服务器中,这个数据的key name作为这个数据的唯一标志,然后通过这个key name得到哈希值,接着取余,比如集群服务器有3台,用0,1,2作为他们的标识,hash % 3 得到标识,与服务器标识匹配,就可以把这数据存入该服务器,取的时候也通过key name 哈希取余匹配主机,从而找到缓存的数据。 但是这种方式也会出现一些问题,就是当某台主机宕掉或者增加一台主机的时候,导致无法匹配到原先存入数据的主机,导致大量数据失效。

3.发展阶段:由哈希取余转向一致性哈希,一致性哈希就是通过将整个哈希值组织成一个虚拟的圆环,且按顺时针方向组织,各服务器主机通过其唯一标志(ip或主机名)得到哈希值,在这个圆环中占坑,作为一个固定的节点,接着将一个数据存入,通过key name得到哈希值,形象地固定在环中某位置,顺时针查找找到第一个主机占坑位置,就把这个数据存入该主机中,取数据也是类似。若出现某台主机宕机了或者要增加某个主机,存入这个集群各个主机的数据会不会出现取数据失效,可以知道增加或减少一台主机,只是从逆时针方向找到第一个主机的区间缓存数据失效,其余均不变。但是这种方式也会出现一些极端情况出现,就是服务器占坑的位置非常接近,导致服务器在这圆环中数据匹配的区间差距很大。

4.后期阶段:采用虚拟节点来解决节点分部不均匀而造成数据倾斜的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如风之夏

感谢,你的鼓励是我前进的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值