Redis专题:Redis集群中哈希一致性算法原理

在Redis分布式集群中,保证数据能够均匀的分布在集群中每个机器中是Redis追求的基本操作,由于redis中的数据是动态变化的,所以为了保证通过最小的代价保证数据均匀分布,哈希一致性算法被提出

1.常规的解决方案导致的问题

如果集群中存在两台服务器,为了保证数据均匀的落在这两台服务器中,常规的解决方案:

  • 拿到每条数据的key值,并对其进行哈希处理
  • 拿到哈希值之后用其模上集群中机器得数量
  • 将得到结果对应数据存放到对应编号的机器
    在这里插入图片描述
    对与数据量小的业务,这种方案可以很好的保证数据可以均匀的分布在每台服务器中,但是后期随着数据量的增大,势必就要增加集群中服务器的数量,所以对所有的数据需要重新梳理找到其合适的存放位置,那么问题就随之而来,一次性对所有的重新数据梳理的工程量非常大,所以哈希一致性算法能够完美的解决该问题
2. 哈希一致性算法的原理

redis集群中,每台服务器都有自己的Ip地址以及服务器编号,假设如下图所示的哈希环中存在2^32个节点,以服务器的IP地址以及服务器对应的编号作为哈希对象,哈希之后得到结果对应该哈希环上某个点。
在这里插入图片描述
同理,对数据的Key值进行哈希之后得到一个的值也存在哈希环上的某一个位置,然后顺时针移动,将其存储在第一个遇到的服务器
在这里插入图片描述
如果向其中添加一台服务器,其原理相同,这样可以保证只移动一部分数据就可以完成数据的迁移
在这里插入图片描述
如果某台服务器突然挂掉的话,那么只将其原理存储在该服务器中数据顺时针移动到紧接的下一个节点的服务器中
在这里插入图片描述

3. 数据倾斜问题的解决
  • 存储框架的数据倾斜
  • 计算框架的数据倾斜

在这里插入图片描述
如上图所示,服务器节点位置相当接近,就导致了少量的服务器存储在了服务器192.168.0.1:1,大量的数据存储在了192.168.0.03:3,数据的分布不均匀

3.1 虚拟子节点在这里插入图片描述

如图所示,将服务器虚拟除一个新的子节点,该虚拟的子节点依然存在在哈希环,哈希环来说节点的数量越多,分布的越均匀,然后继续按照顺时针的移动规则移动数据到对应的服务器。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis哈希一致性算法是一种在分布式环境有效地进行数据分片和负载均衡算法。这个算法使用了一致性哈希原理一致性哈希算法将整个哈希值空间组织成一个虚拟的圆环,每个节点在这个圆环上占据一个位置。当需要存储或获取数据时,根据数据哈希值在圆环上找到最近的节点,并将数据存储到该节点上。这样可以保证每个节点负责一定范围内的数据,实现了数据均衡存储和查询的负载均衡。引用提到的一致性Hash算法是对2^32-1取模,即哈希值是一个32位无符号整型。这保证了哈希环的平衡性和分布性。引用指出,Redis集群引入了哈希槽slots的概念,而不是使用一致性哈希算法哈希槽是将整个哈希环分成了固定数量的小块,每个节点负责一定数量的哈希槽。这种方式简化了数据的迁移和节点的动态扩缩容,提高了集群的可用性和可扩展性。总结来说,Redis哈希一致性算法使用一致性哈希原理,在分布式环境实现了数据均衡存储和查询的负载均衡。同时,Redis集群引入了哈希槽的概念,简化了数据的迁移和节点的扩缩容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [redis系列之——一致性hash算法](https://blog.csdn.net/wuxiaolongah/article/details/107327803)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值