Sentinel获取服务器信息

267 阅读2分钟

这是我参与11月更文挑战的第28天,活动详情查看:2021最后一次更文挑战

Sentinel获取服务器信息

Sentinel获取主服务器信息

Sentinel默认每十秒一次通过命令连接向主服务器发送INFO命令,并通过分析INFO命令的回复来获取主服务的当前信息。

通过INFO命令Sentinel可以获取到主服务器的运行🆔和服务器角色,可以获取到从服务的ip和port,根据这些信息,Sentinel将对主服务器的实例结构进行更新。主服务器重启后,运行id和实例结构保存的id不同,Sentinel检测这个情况后,会对实例结构的运行id进行更新。

从服务器信息会被用于主服务器实例结构的slaves字典,这个字典记录了主服务器属下从服务器的名单:字典的键是Sentinel自动设置的从服务器名字,格式为ip:port ,字典的值为从服务器对应的实例结构

在分析INFO信息的时候,检查从服务器对应的实例结构是否在slaves字典中,如果在进行更新,如果不在会在slaves字典为这个从服务器新创建一个实例结构。

主服务器实例结构的flags属性的值是SRI_MASTER,从服务器实例结构的flags属性值为SRI_SLAVE

主服务器实例结构的name属性的值是用户使用Sentinel配置文件设置的,从服务器实例结构的name属性值是Sentinel根据从服务器的ip地址和端口号自动设置的。

获取从服务器信息

Sentinel会创建连接到从服务器的命令连接和订阅连接

创建命令连接后,Sentinel默认情况下每十秒一次通过命令连接向从服务器发送INFO命令,可以拿到从服务器的运行🆔,角色,主服务器的ip和port,连接状态,从服务器的优先级,复制偏移量