面试题答案
一键面试Sentinel 获取从服务器信息的机制
- 自动发现:
- Sentinel 通过发布订阅机制与主服务器进行交互。当 Sentinel 启动并连接到主服务器时,主服务器会向 Sentinel 发送关于其从服务器的信息。主服务器会在
__sentinel__:hello
频道上发布自身以及从服务器的相关信息,Sentinel 订阅这个频道,从而获取到从服务器的初始信息,包括从服务器的地址等。
- Sentinel 通过发布订阅机制与主服务器进行交互。当 Sentinel 启动并连接到主服务器时,主服务器会向 Sentinel 发送关于其从服务器的信息。主服务器会在
- 定期检查:
- Sentinel 会定期对主服务器和从服务器进行健康检查。它会向从服务器发送
PING
命令来检测其是否存活。如果从服务器在规定时间内没有响应PING
命令,Sentinel 会标记该从服务器为“主观下线”(Subjectively Down,简称 SDOWN)。多个 Sentinel 之间会互相交流,如果多数 Sentinel 都认为某个从服务器主观下线,那么该从服务器会被标记为“客观下线”(Objectively Down,简称 ODOWN)。 - Sentinel 还会定期获取从服务器的复制状态信息,例如通过
INFO replication
命令获取从服务器与主服务器的同步状态,包括复制偏移量等,以此来监控从服务器的复制健康状况。
- Sentinel 会定期对主服务器和从服务器进行健康检查。它会向从服务器发送
相关命令
- INFO replication:
- 用途:这个命令用于获取从服务器的复制相关信息。从服务器会返回诸如
role:slave
表明自身角色是从服务器,master_host
和master_port
表示主服务器的地址和端口,master_link_status:up
显示与主服务器连接状态,slave_repl_offset
表示从服务器的复制偏移量等详细信息。Sentinel 通过获取这些信息来监控从服务器与主服务器的同步情况。
- 用途:这个命令用于获取从服务器的复制相关信息。从服务器会返回诸如
- PING:
- 用途:Sentinel 使用
PING
命令检测从服务器是否存活。如果从服务器能够在规定时间内回复PONG
,则表明其处于活动状态。若在规定时间内未收到PONG
,Sentinel 会按照规则将其标记为“主观下线”。
- 用途:Sentinel 使用