Redis哨兵的感知策略

Redis哨兵的感知策略

哨兵

Redis中的哨兵方案是通过在系统中的多个哨兵节点构成的哨兵网络检测该网络覆盖范围内的主从服务器状态。 为的就是能够当主节点离线时,可以及时感知并控制从节点进行选举以产生新的主节点。
在这里插入图片描述

三层同步

哨兵首先与主服务器创建连接。

哨兵会创建两个连向主服务器的异步连接:1. 命令链接 :专门向主服务器发送命令,并接收命令的回复2.订阅链接:订阅主服务器的sentinel:hello频道

对于每个同哨兵链接的服务器,哨兵通过命令链接向服务器的snetinel:hello频道发送信息,通过订阅从服务器的snetinel:hello频道接收信息。

命令链接:哨兵->>服务器
订阅链接: 服务器->>哨兵
在这里插入图片描述

第一层同步:

哨兵默认以10秒一次的频率通过命令链接主服务器发送INFO命令,主服务器接收到后,将自身以及自己从服务器的信息发送给哨兵,其中包含主服务器与从服务器的信息。哨兵对表单进行更新处理。

并且当哨兵发现新的从服务器时,会与新的从服务器建立命令链接和订阅链接。并以10秒一次的频率通过命令链接向从服务器发送INFO命令。
在这里插入图片描述
信息被保存至哨兵的字典中
在这里插入图片描述

第二层同步:

哨兵默认情况以2秒一次的频率通过命令链接所有被监视的主服务器和从服务器发送信息。
信息包含以下内容
在这里插入图片描述
在这里插入图片描述

第三层同步:

因为会存在多个哨兵链接到同一个主服务器的情况。在此情况下单个哨兵通过命令链接发送INFO至主服务器后,主服务器的snetinel:hello频道的返回信息会被多个哨兵订阅接收。因此哨兵之间存在相互感知。
哨兵除了监视主从服务器也同时对链接在共同主服务器上的其他哨兵进行监视。因此当当前哨兵检测到有其他哨兵存在时,不仅会在字典中加入其他哨兵的信息。同时创建连向该哨兵的命令链接(哨兵间只通过命令链接通信)
在这里插入图片描述
第三层同步是哨兵间的同步,为的是检测哨兵是否在线。
哨兵默认以每秒一次的频率向所有与他创建了命令链接的实例(主从服务器、其他哨兵)发送PING命令,通过返回的PING恢复来判断对方是否在线。
判断是否在线包含两种方式:主观下线、客观下线
主观下线:定义一个最长等待时间,超过该时间没有收到回复就判定为主观下线
客观下线:收集其他哨兵的返回信息,超过半数的认为哨兵A下线的话,哨兵A则在该哨兵内被判为客观下线

注意:每个哨兵对其他哨兵是否下线的判断尺度不同。因此可能存在信息不一致
A:2ms B:4ms C:6ms -->尺度不同

故障转移

通过选举出领头哨兵,领头哨兵决定如何转移。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值