MST

星途 面试题库

面试题:Redis Sentinel选举领头Sentinel的基本原理是什么

请阐述在Redis Sentinel系统中,选举领头Sentinel时所依据的基本原理和关键步骤。
14.8万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

基本原理

  1. Raft算法变种:Redis Sentinel使用一种基于Raft算法变种的选举机制。在这个机制中,每个Sentinel节点都有机会成为领导者(领头Sentinel)。
  2. 节点状态:Sentinel节点有不同状态,如追随者(Follower)、候选者(Candidate)和领导者(Leader)。初始状态下,所有Sentinel节点都是追随者。

关键步骤

  1. 主观下线判断
    • 每个Sentinel节点会定期向主节点和其他从节点发送PING命令。
    • 如果在一定时间内(可配置的down-after-milliseconds参数)没有收到响应,该Sentinel节点会将主节点标记为“主观下线”(Subjectively Down,简称SDOWN)。
  2. 客观下线判断
    • 当一个Sentinel节点将主节点标记为SDOWN后,会向其他Sentinel节点发送SENTINEL is-master-down-by-addr命令。
    • 当同意主节点为下线状态的Sentinel节点数量达到配置的quorum值时,主节点会被标记为“客观下线”(Objectively Down,简称ODOWN)。
  3. 选举领头Sentinel
    • 当主节点被标记为ODOWN后,检测到ODOWN的Sentinel节点会发起选举。
    • 发起选举的Sentinel节点会向其他Sentinel节点发送SENTINEL is-master-down-by-addr命令,并带上自己的配置纪元(configuration epoch)。
    • 收到选举请求的Sentinel节点,在一个配置纪元内,只会对第一个收到的选举请求进行投票。
    • 当某个Sentinel节点获得超过半数(包括quorum值)的Sentinel节点投票时,该Sentinel节点成为领头Sentinel。
  4. 故障转移
    • 领头Sentinel负责执行故障转移操作。它会从从节点中挑选一个晋升为主节点,并让其他从节点指向新的主节点。