【Redis】05 Redis集群

1. 架构图

【Redis】05 Redis集群

2. 哈希分区

2.1 一致性哈希分区

【Redis】05 Redis集群

  • 每个节点分配token
  • 数据读写时,根据key计算hash值,顺时针查找第一个大于等于该哈希值的token

2.2 虚拟槽分区

【Redis】05 Redis集群

  • 键根据哈希函数映射到槽内。
  • 每个节点负责一部分槽以及槽所映射的键值数据

3. 集群添加kv步骤

  • key crc16 算出值 % 16384 =>哈希槽
  • k-v 放到某个哈希槽

4. 集群投票与容错

4.1 节点失效判断

半数以上节点与其中一个节点通信超时,就认定失效。

4.2 集群失效判断

  • 任意master挂掉,且当前master没有slave。
  • 半数以上master挂掉。

5. 集群扩容

  • 准备新节点
  • 加入集群
  • 迁移槽和数据
    • 槽和数据迁移到6385节点
      【Redis】05 Redis集群
  • 槽和数据的迁移流程
    【Redis】05 Redis集群

6. 集群收缩

6.1 安全下线

【Redis】05 Redis集群

6.2 下线迁移槽

【Redis】05 Redis集群

6.3 忘记节点

【Redis】05 Redis集群