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没有数据,就会去数据库获取数据并进行缓存重建。一旦请求量过大,读取数据库并创建缓存就会出现承载压力过大而导致系统崩溃。
5.9.2. 一致性hash算法:缓存热点数据容易导致性能瓶颈
先构造一个0到2^32的整数环,然后将服务器节点的Hash值,放在该环上(可以理解为将你的ip做hash,将ip的HashCode放在环上)。然后根据需要缓存的数据的Key,计算Key的HashCode,然后在环上,顺时针查找距离这个Key的Hash值最近的缓存服务器的节点,然后将Value,存储到该服务器节点上。
缓存热点问题,当某个热点数据在某个hash区间内特别多,就会出现大量的请求落在某个master节点上,出现性能瓶颈。
5.9.3.redis cluster的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的成本是非常低的。
上一篇: define 宏定义命令