为了账号安全,请及时绑定邮箱和手机立即绑定

Sentinel选举领头Sentinel的算法和过程,以及状态变化

标签:
Redis

建议先关注、点赞、收藏后再阅读。
图片描述

Sentinel选举领头Sentinel的算法和过程

  1. 当一个Sentinel进程启动时,它会首先尝试连接已知的Sentinel进程,并与它们进行通信。

  2. Sentinel进程之间会通过发送PING、PONG消息来维持心跳。每个Sentinel进程都会周期性地向其他已知的Sentinel进程发送PING消息,并等待它们的PONG响应。

  3. 在收到PING消息时,被请求的Sentinel会检查自身是否已经具备领头Sentinel的条件,如果是,则发送PONG响应。

  4. 当一个Sentinel进程在一定时间内未收到来自其他Sentinel的PONG响应时,它将认为其他Sentinel进程已经失去连接,此时,它将尝试进入领头Sentinel选举。

  5. 为了进入选举状态,Sentinel进程需满足以下条件:

    • 它本身具备了领头Sentinel的最低配置要求。
    • 检测到至少N个Sentinel进程已经失去连接(N由sentinel monitor <master-name> <ip> <port> <quorum>命令指定,表示至少需要多少个Sentinel进程认为其他Sentinel进程失去连接)。
  6. 进入选举状态后,Sentinel进程会向其他已知的Sentinel进程发送SENTINEL is-master-down-by-addr消息,询问它们是否同意领头Sentinel的选举。

  7. 收到SENTINEL is-master-down-by-addr消息的其他Sentinel进程会检查是否满足选举的条件,如果符合,则发送SENTINEL ask-for-leader-addr消息进行回应。

  8. 发起选举的Sentinel进程会收集所有同意选举并回应了SENTINEL ask-for-leader-addr消息的Sentinel的信息,然后根据特定算法(比如按照优先级或ID排序)选择其中一个成为领头Sentinel。

  9. 选举完成后,发起选举的Sentinel进程会收到其他Sentinel的回应,并获取到领头Sentinel的地址。

选举完成后的状态变化

选举完成后,Sentinel进程将完成以下状态的变化:

  1. 新选出的领头Sentinel进程会将自身的ID和IP地址广播给其他Sentinel进程。

  2. 其他Sentinel进程收到新领头Sentinel的广播信息后,会更新自己记录的领头Sentinel的信息。

  3. 如果一个被选为领头Sentinel的Sentinel进程发现某个master已经下线或无法访问,它将负责进行后续的故障转移操作。

  4. 如果一个被选为领头Sentinel的Sentinel进程下线,其他Sentinel进程则会启动新的选举过程,选出新的领头Sentinel。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消