Hash一致性算法

Redis的分片策略基于一致性Hash算法,旨在解决分布式集群中机器变动导致的数据迁移问题。该算法通过hash环和虚拟节点设计确保数据均衡分布,并维持单调性,即使在节点增减时也能尽量减少数据变化。此外,它还通过分散性和负载控制优化内存使用,避免服务器压力过大。
摘要由CSDN通过智能技术生成

redis 中分片的应用

在分布式集群中,对机器的添加删除,或者机器故障后自动脱离集群这些操作是分布式集群管理最基本的功能。如果采用常用的hash(object)%N算法,那么在有机器添加或者删除后,很多原有的数据就无法找到了,这样严重的违反了单调性原则。

Redis的分片底层原理:一致性hash算法

Hash一致性算法介绍

两大设计:

(1)hash环设计:非常大,从0到2^32(43亿个值),把对象(数据)和服务器映射到同一个哈希空间中;

(2)虚拟节点的设计:通过虚拟节点的引入,对象的分布就比较均衡了。

  1. 确定节点node的位置
  2. 对key进行hash运算.获取唯一的位置
  3. 之后顺时针找到最近的节点
  4. 之后链接节点进行set/get操作

在这里插入图片描述

平衡性

说明 : 为了解决数据分配不均,采用虚拟节点的方式实现数据的均衡(均衡性算法)
问题说明 : 如果没有虚拟节点平衡数据,则会造成数据负载不均

平衡性:尽量分散;

单调性

说明 : 当节点新增时,数据可以实现自动的迁移
重点 : 一旦节点宕机,则内存缺失,整个分片不能正常使用
原则 : 如果节点新增,则尽可能保证原有的数据不发生变化

已经分配的不能换地方

分散性

由于分布式的部署导致某些服务器不能使用全部的内存空间,同一个key有多个位置

负载

由于分布式的部署导致某些服务器不能使用全部的内存空间.同一个位置可能会有多个key

尽量避免分散性和负载

防止 : 尽可能使用全部的内存空间.能够有效的降低分散性和负载

总结

1、搭建缓存集群缓解服务器的访问压力;

2、通过hash算法将数据合理的分配到每一台缓存服务器中;

3、出现增减缓存服务器是hash算法存在问题;

4、引入一致性哈希算法解决这个问题:保持了单调性,避免了大量数据迁移,减小了服务器的压力;

5、通过虚拟节点方式解决哈希偏斜问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值