电脑头发抓紧@老子曹尔蓝透! 由于Redis Cluster(集群)采用哈希分区规则,所以先介绍下常见的哈希分区规则。常见的哈希规则:节点取余分区规则、一致性哈希分区(Consistent hashing)、虚拟槽(Virtual slot)分区。 使用特定的数据,如Redis的键或用户ID,再根据节点(运行在集群模式下的Redis服务器)的数量N使用公式:hash(key) % N计算出hash值,用来决定数据存储在哪个节点上。例如,将20个数据存储在4个节点上: 一致性哈希分区实现思路是为系统中的每个节点分配一个token,范围是0~232-1,这些token构成一个哈希环。数据读写执行节点查找操作时,先根据key计算出哈希值,然后顺时针找到第一个遇到的token节点。 一致性哈希分区的缺点: Redis Cluster采用的就是虚拟槽分区。虚拟槽分区巧妙的使用了哈希空间,使用分散度良好的哈希函数将所有的数据映射到一个固定范围的整数集合中,整数定义为槽(slot)。这个范围一般远远大于节点数,这是为了消除哈希的倾斜性,便于数据拆分和扩展。例如Redis Cluster槽的范围是0~。槽是集群内数据管理和迁移的基本单位,每个节点都会负责一定数量的槽。 如在Redis中,假设有5个节点,每个节点平均负责3276个槽。 (1) 常见的哈希分区规则有:节点取余分区、一致性哈希分区和虚拟槽分区。 (2) Redis Cluster数据分区规则采用虚拟槽方式,所有的键映射到个槽中,每个节点负责一部分槽和相关数据,实现数据和请求的负载均衡。 本文完 注:本文参考《Redis开发与运维》,如发现错误,请指正!
|