面试题答案
一键面试1. 主观下线(Subjectively Down,SDOWN)
- Sentinel 节点会定期向主节点和从节点发送
PING
命令,以检测节点是否可达。 - 如果在配置的
down-after-milliseconds
参数指定的时间内,节点没有回复PONG
,Sentinel 节点会将该节点标记为主观下线。例如,配置sentinel down-after-milliseconds mymaster 30000
表示如果 Sentinel 与主节点mymaster
超过 30000 毫秒(30 秒)没有通信,就将其标记为主观下线。
2. 客观下线(Objectively Down,ODOWN)
- 当一个 Sentinel 节点将主节点标记为主观下线后,它会向其他 Sentinel 节点发送
SENTINEL is-master-down-by-addr
命令,询问其他 Sentinel 节点对该主节点状态的判断。 - 每个接收到该命令的 Sentinel 节点会根据自身对主节点的判断进行回复。
- 当判断主节点主观下线的 Sentinel 节点数达到配置的
quorum
参数指定的数量时,这个主节点就会被标记为客观下线。例如,配置sentinel quorum mymaster 2
表示至少需要 2 个 Sentinel 节点认为主节点主观下线,才能将其标记为客观下线。
3. 相关配置作用
down-after-milliseconds
:这个参数设置了 Sentinel 判断一个节点主观下线的时间阈值。如果设置过小,可能会因为网络抖动等短暂问题导致误判;如果设置过大,故障检测的延迟会增加。quorum
:定义了判断主节点客观下线所需的 Sentinel 节点数。quorum
的值应该小于 Sentinel 集群中的节点总数,且一般建议大于集群节点数的一半,以确保在多数 Sentinel 节点达成共识时才判定主节点客观下线,防止脑裂等问题。