redis哨兵机制

哨兵机制:主要任务监控,选主和通知,运行在特殊模式下的redis进程。
1、哨兵基本流程
监控就是哨兵周期性的给主从库发送ping命令,如果在规定时间没有响应,就会将该实例标识为下线状态,如果是主库,就标识为主库下线,开始自动切换主库。选主,主库挂了之后,哨兵从多个从库中按照规则选择。通知,选主完成之后将主库链接信息同步给其余从库。整体流程如图:
在这里插入图片描述

2、主观下线和客观下线
主观下线: 哨兵进程使用ping命令检测自己和主从库的网络链接情况,如果ping超时,会将该机器标识为主观下线。
客观下线: 当标识主观下线的为主库,就会开始选主过程,会对redis有一定的影响,且会存在误判的情况,未来减少误判,哨兵采用集群模式,在判断主库下线的时候,需要多个哨兵同时判断主观下线才会被标记为客观下线。如下图所示:
在这里插入图片描述
3、选主流程:
哨兵按照一定筛选条件将不符合条件的从库去掉,然后按照一定规则给从库逐个打分,将得分最高的从库选为主库,如图所示:
在这里插入图片描述
3.1、筛选条件: 检测从库当前状态,判断之前的网络状态,(down-after-milliseconds配置项就是判断主从断连的最大链接超时时间)
3.2、打分规则: 按照三个规则(从库优先级,从库复制进度,从库id号)一次进行三轮打分,只要在某一轮中出现得分最高的从库,就将其定义为主库,选主结束。
a、从库优先级:用户通过slave-priority配置项给从库设置不同的优先级
b、从库复制进度:根据slave_repl_offset和master_repl_offset两个值来判断哪个从库最接近主库,就代表复制进度最接近,如图:
在这里插入图片描述
c、从库id号:每个redis实例都会有个ID号,id号小的得分高。
4、哨兵集群
4.1、基于pub/sub(发布/订阅)机制的哨兵集群组成,整体流程如图所示:
在这里插入图片描述
多个哨兵都订阅同一个频道,并通过该频道进行消息的订阅和发布,主库的下线确认,哨兵集群建立就通过这种方式形成了消息网络。
4.2、通过INFO命令完成和从库建立链接的过程,具体过程如图所示:
在这里插入图片描述
哨兵通过向主库发送INFO命令接收从库列表,然后和列表中的地址建立链接,进行监控,集群中每一个哨兵都通过该过程完成和从库建立链接的过程。
4.3、客户端(获取redis实例状态的服务)和哨兵信息同步也通过订阅发布来实现,如下图所示列出了关键事件的频道:
在这里插入图片描述

客户端读取哨兵的配置文件后,获取哨兵的地址和端口,就可以在客户端执行不同订阅命令获取不同的事件消息,示例:

subscribe +odown  //订阅所有实列进入客观下线状态事件
psubscribe * //订阅所有事件

4.4、使用投票仲裁算法确定主从切换执行哨兵和主库客观下线过程,如下图所示:
在这里插入图片描述

主库下线状态过程:当有一个哨兵实例判断主库下线后,就会发送is-master-down-by-addr命令,其余实列根据自己和主库的连接情况做出投票,然后根据赞成票数量和配置文件中quorum配置项对比,只要大于等于配置项的数量,就标记主库客观下线。
主从切换leader选举过程:整体过程如下图所示:
在这里插入图片描述

leader哨兵需要满足两个条件:1、拿到半数以上赞成票;2、拿到票数大于等于quorum值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值