欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

redis cluster集群架构详解(十七)- redis cluster数据分布算法比较-hash算法、一致性hash算法、hash slot算法

程序员文章站 2024-03-21 10:52:10
...

5.9. 数据分布算法

分布式数据存储的核心算法,数据分布的算法主要有三种算法:hash算法、一致性hash算法、hash slot算法。
hash算法 -> 一致性hash算法(memcached使用) -> hash slot算法(redis cluster 使用)

​ redis cluster 用不同的算法,就决定了数据如何分布到这些节点上去。

5.9.1. hash算法和弊端:大量缓存重建

客户端访问key,通过使用key的hash值对redis 节点数取摸,找到对应的节点去获取Key的数据。

其弊端在于,某个master宕机,所有落在此master的请求就会尝试去其他master获取,其他master没有数据,就会去数据库获取数据并进行缓存重建。一旦请求量过大,读取数据库并创建缓存就会出现承载压力过大而导致系统崩溃。

redis cluster集群架构详解(十七)- redis cluster数据分布算法比较-hash算法、一致性hash算法、hash slot算法

5.9.2. 一致性hash算法:缓存热点数据容易导致性能瓶颈

先构造一个0到2^32的整数环,然后将服务器节点的Hash值,放在该环上(可以理解为将你的ip做hash,将ip的HashCode放在环上)。然后根据需要缓存的数据的Key,计算Key的HashCode,然后在环上,顺时针查找距离这个Key的Hash值最近的缓存服务器的节点,然后将Value,存储到该服务器节点上。

redis cluster集群架构详解(十七)- redis cluster数据分布算法比较-hash算法、一致性hash算法、hash slot算法

缓存热点问题,当某个热点数据在某个hash区间内特别多,就会出现大量的请求落在某个master节点上,出现性能瓶颈。

5.9.3.redis cluster的hash slot算法

redis cluster集群架构详解(十七)- redis cluster数据分布算法比较-hash算法、一致性hash算法、hash slot算法

1、redis cluster有固定的16384个hash slot,对每个key计算CRC16值,然后对16384取模,可以获取key对应的hash slot。

2、redis cluster中每个master都会持有部分slot,比如有4个master,那么可能每个master持有4000多个hash slot。

3、hash slot让node的增加和移除很简单,增加一个master,就将其他master的hash slot移动部分过去,减少一个master,就将它的hash slot移动到其他master上去。

4、客户端的api,可以对指定的数据,使用hash tag 来实现走同一个hash slot。

5、移动hash slot的成本是非常低的。

相关标签: redis缓存架构

上一篇: define 宏定义命令

下一篇: