Skip to content

Cluster集群

概述

Redis Cluster是Redis的分布式解决方案,数据自动分片(16384个槽),支持高可用。

数据分片

槽分配

c
slot = CRC16(key) % 16384

槽位映射

节点数每节点槽数
35460
62730
91819

MOVED重定向

GET key
- MOVED 12345 192.168.1.1:6379  # 槽12345在192.168.1.1

客户端缓存槽位映射,减少重定向。

故障转移

故障检测

  • 节点定期ping/pong
  • 超过半数master认为某节点不可达
  • 标记节点fail

从节点选举

  1. 主节点fail后
  2. 从节点向其他master发送选举
  3. 获得多数票的从节点成为新主

面试考点

Q: Cluster vs Sentinel?

特性SentinelCluster
数据分片
故障转移手动/自动自动
节点数奇数至少3主
客户端需要 sentinel需要 cluster

Q: 为什么是16384个槽?

  • 槽位信息小(2KB),便于Gossip传播
  • 足够分散,支持足够多节点
  • 没必要太多,增加心跳开销

最后更新: