面试题答案
一键面试主观下线状态检测基本流程
- 定期PING操作:Sentinel会以一定的时间间隔(可通过配置参数
down-after-milliseconds
设定)向主服务器和从服务器发送PING命令。 - 响应判断:如果在
down-after-milliseconds
时间内没有收到被监控服务器的有效回复(包括回复PONG
或其他错误),Sentinel就会将该服务器标记为主观下线(Subjectively Down,简称SDOWN)。
关键配置参数
- down-after-milliseconds:这个参数用于设定在认定服务器主观下线之前,Sentinel等待服务器回复的最大时间(单位为毫秒)。例如,若设置为
5000
,表示如果5秒内没有收到服务器对PING命令的回复,就标记为SDOWN。
涉及的数据结构
- sentinelRedisInstance结构:在Sentinel的代码实现中,
sentinelRedisInstance
结构用于表示一个被监控的Redis实例(主服务器或从服务器)。这个结构中包含了与实例状态相关的字段,例如flags
字段会标记该实例是否处于主观下线状态等信息。当一个实例被标记为主观下线时,该结构中的相关状态字段会被更新以反映这一状态变化。