面试题答案
一键面试主观下线(Subjective Down,SDOWN)
- 概念:单个Redis Sentinel节点对某个Redis实例做出的下线判断。这只是一个Sentinel节点的“主观”看法,不一定代表该实例真的不可用。
- 触发条件:当Sentinel节点在配置的
down-after-milliseconds
时间内,无法成功连接某个Redis实例并与之通信,就会将该实例标记为主观下线。 - 作用:主观下线是故障检测的第一步,它是快速初步判断某个Redis实例可能出现问题的依据。一旦某个实例被某个Sentinel标记为主观下线,这个Sentinel会向其他Sentinel节点发送
SENTINEL is-master-down-by-addr
命令,询问它们对该实例的状态判断,以此来进一步确定是否客观下线。
客观下线(Objective Down,ODOWN)
- 概念:多个Redis Sentinel节点都认为某个Redis实例下线,达成共识后将该实例标记为客观下线。这意味着该实例在整个Redis Sentinel系统中被认为确实不可用了。
- 触发条件:当认为某个Redis实例主观下线的Sentinel节点数量,达到配置的
quorum
个数时,这些Sentinel节点会达成共识,将该实例标记为客观下线。例如,若quorum
设置为2,那么至少需要2个Sentinel节点都认为某个实例主观下线,才会将其标记为客观下线。 - 作用:客观下线是故障转移的重要前提。只有实例被标记为客观下线后,Sentinel系统才会开始进行故障转移操作,选举新的主节点,并让从节点去复制新的主节点,以保证Redis服务的高可用性。