一致性哈希和哈希槽(redis)

本文介绍了Redis集群采用哈希槽而非一致性哈希的原因,详细阐述了简单哈希算法的问题、一致性哈希算法的容错性和扩展性,以及哈希槽在解决数据分布和节点扩展上的优势。Redis Cluster包含16384个哈希槽,通过人工配置适应节点变化,依赖主从复制和故障转移确保高可用。
摘要由CSDN通过智能技术生成

1、集群分片模式

如果 redis 只用复制功能做主从,那么当数据量巨大的情况下,单机情况下可能已经承受不下一份数据,更不用说是主从都要各自保存一份完整的数据。在这种情况下,数据分片是一个非常好的解决办法。

redis 的 custer 正是用于解决该问题。它主要提供两个功能:

1、自动对数据分片,落到各个节点上

2、即使集群部分节点失效或者连接不上,依然可以继续处理命令

对于第二点,它的功能有点类似于 sentienl 的故障转移,在这里不细说。下面详细了解下 redis 的槽位分片原理,在此之前,先了解下分布式简单哈希算法和一致性哈希算法,以帮助理解槽位的作用。

2、简单哈希算法

假设有三台机,数据落在哪台机的算法为:

c = Hash(key) % 3

例如 key A 的哈希值为4,4 % 3 = 1,则落在第二台机。Key ABC 哈希值为11,11 % 3 = 2,则落在第三台机上。

利用这样的算法,假设现在数据量太大了,需要增加一台机器。A 原本落在第二台上,现在根据算法4 % 4 = 0,落到了第一台机器上了,但是第一台机器上根本没有 A 的值。这样的算法会导致增加机器或减少机器的时候,引起大量的缓存穿透,造成雪崩。

3、一致性哈希算法

在1997年,麻省理工学院的 Karger 等人提出了一致性哈希算法,为的就是解决分布式缓存的问题。

在一致性哈希算法中,整个哈希空间是一个虚拟圆环。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值