文章目录
redis高可用之哨兵模式
Sentinel(哨兵)是redis的高可用解决方案:有一个或多个sentine实例组成的sentinel系统可以监视任意多个主服务器以及这些主服务器下从属的从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器下从属的某个从服务器提升为主服务器,然后使用新的主服务器代替原来已下线的主服务器继续处理命令请求。
sentinel会创建连向主从服务器的命令连接和订阅连接
对于每个被sentinel监视的主从服务器来说,sentinel会创建两个连向主从服务器的异步连接:命令连接和订阅连接。因为sentinel需要与多个实例创建网络连接,所以使用的是异步连接。
命令连接
- sentinel默认会以每10秒一次的频率,通过命令连接向被监视主从服务器发送INFO命令,并通过分析INFO命令的回复来获取服务器的当前信息。
- sentinel默认会以每2秒一次的频率,通过命令连接向所有被监视的服务器发送PUBLISH命令
订阅连接
当sentinel与服务器建立起订阅连接后,会通过订阅连接向服务器发送SUBSCRIBE命令。每个与sentinel连接的服务器,sentinel既通过命令连接向服务器的hello频道发送消息,又通过订阅连接从服务器的hello频道接收消息。
对于监视同一个服务器的多个sentinel来说,一个sentinel发送的消息会被其他的sentinel接收到,这些消息用于更新其他sentinel对发送消息的sentinel的认知,也被用于更