继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

2023-09-29 09:52:25382浏览

一凡

2实战 · 485手记 · 29推荐
TA的实战

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

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。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP