Redis 的 Raft 选举协议 主要用于 Redis Sentinel 和 Redis Cluster 的高可用实现中(尽管 Redis Cluster 默认使用类似 Gossip 的协议,但 Raft 的思想在 Sentinel 的领导者选举中有体现)。以下是关于 Raft 协议在 Redis 中的应用及脑裂问题的详细解析:
一、Redis 中的 Raft 选举机制
1. Redis Sentinel 的领导者选举
Redis Sentinel 使用 Raft 变种算法 选举 主 Sentinel(Leader),以协调故障转移(Failover)流程:
- 选举触发条件:
- 主节点(Master)被判定为客观下线(
ODOWN
)。 - Sentinel 节点间通过
is-master-down-by-addr
消息发起投票。
- 主节点(Master)被判定为客观下线(
- 投票规则:
- 每个 Sentinel 只能投一票(基于配置纪元
epoch
)。 - 获得 多数派(N/2+1) 投票的 Sentinel 成为 Leader。
- 每个 Sentinel 只能投一票(基于配置纪元
- 关键参数