image.png

1.redis cluster集群是什么?

redis cluster集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。Redis cluster集群不需要sentinel哨兵也能完成节点移除和故障转移的功能。需要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩展,据官方文档称可以线性扩展到1000节点。redis cluster集群的性能和高可用性均优于之前版本的哨兵模式,且集群配置非常简单

2.指派槽

查看crc16 算法算出key的槽位命令 cluster keyslot key

16384/3 0-5461 5462-10922 10923-16383
16384/4 4096

cluster addslots slot(槽位下标)

3.缩容集群

  1. 将槽点分配给其他/本机器
  2. 关闭/开启节点

    4.故障转移(与哨兵相似)

1.故障发现: 通过ping/pong消息实现故障发现(不依赖sentinel)

2.故障恢复

  1. 检查资格

    每个从节点检查与主节点的断开时间
    超过配置的cluster-node-timeout * cluster-replica-validity-factor 时间取消资格

  2. 选择偏移量最大的替换主节点

    1. 当前从节点取消复制变为主节点(slaveof no one)
    2. 撤销以前主节点的槽位,给新的主节点
    3. 向集群广播消息,表明已经替换了故障节点

//todo crc16算法