redis哨兵模式的功能-以及主从选举算法

对于哨兵模式而言,主要负责的内容有

1、监控
2、选主(选择主库)
3、通知

哨兵工作流程:

1、监控:节点发现和配置
2、心跳检测: 哨兵会定期向监控的节点发送PING命令来检测节点是否存活
3、节点状态变更: 当哨兵连续多次无法连接到一个节点时,它会将该节点标记为主观下线
4、故障判断和选举: 当主节点被标记为客观下线时,哨兵会执行故障判断。它会从剩余的健康主节点中选举一个作为新的主节点,并将该信息广播给其他哨兵和客户端。故障判断的逻辑考虑了多个因素,包括优先级、最近一次复制偏移量等。

5、自动故障切换: 如果主节点被标记为客观下线,哨兵会通知从节点晋升为新的主节点。同时,哨兵会更新其他从节点的配置,使其复制新的主节点。这确保了即使主节点发生故障,集群仍然可以继续提供服务。

6、监控从节点: 哨兵还会监控从节点的状态,包括从节点是否与主节点保持同步,以及从节点的复制延迟情况。如果从节点无法同步或者复制延迟过高,哨兵会将其标记为不健康。

7、节点恢复: 如果一个节点从客观下线状态恢复,哨兵会将其标记为健康,并将其重新纳入集群中。从节点恢复后,它会重新同步主节点的数据。

8、配置更新: 如果集群的拓扑发生变化,例如添加或移除节点,哨兵会自动更新配置,以便客户端能够正确连接到集群。

9、事件通知: 哨兵通过发布订阅机制向订阅者(通常是客户端)发送有关集群状态变化的消息。这使得应用程序能够根据实时的集群状态做出相应的决策。

10、持续监控: 哨兵会持续地监控集群中的节点,定期执行心跳检测、状态更新和故障判断,以确保集群的稳定运行。

选举流程-如何选定新主库

1、主观下线和客观下线判断: 当哨兵节点主观下线(单个哨兵认为不可用)一个主节点时,如果多数哨兵都主观下线了同一个主节点,那么这个主节点会被标记为客观下线(多数派共识)。

2、选举新主节点: 当一个主节点被标记为客观下线后,哨兵节点会开始选举一个新的主节点。选举过程如下:

哨兵会在所有没有下线的从节点(Slaves)中选择一个作为新主节点。哨兵会选择一个【延迟最小、复制偏移量最大】的从节点作为新主节点。这确保了新主节点是最接近原主节点的从节点。
如果没有合适的从节点,哨兵会选择一个【具备最高优先级的】从节点,将其升级为主节点。
如果优先级相同,那么哨兵会选择一个【复制偏移量最大】的从节点。

3、故障转移和切换:一旦新主节点被选定,哨兵会发起故障转移操作。旧主节点会变成新主节点的一个从节点。其他从节点会重新配置,指向新的主节点。这个过程会保证尽量不丢失数据,并且保证整个集群的高可用性。

Redis哨兵模式选举用的是Redis Sentinel自主选举

redis哨兵模式详细介绍:跳转

脑裂的问题解决和数据丢失的问题

在这里插入图片描述
解决方案:
在这里插入图片描述
1、首先是脑裂的问题,在配置文件中,设置如果主节点发现可以用从节点少于,原来配置的从节点,脑裂会生成新的Master,所以从节点就变少了,那么就告警,或者不在为客户端提供服务,这个就可以解决脑裂的问题。

2、第二个因为主节点真的挂机了,丢了很多数据,那么久判断如果每个从节点的偏移量差太大,比如某个节点的offset只有百分之80那么说明还有很多没有备份给从节点,如果主节点在新增数据,那么偏移量的差就会越来越大,所以此时主节点不能再对外提供服务。

缺点:就是本来高可用,结果变成不高可用了。

怎么发现Master挂了

哨兵的节点,最少是三台,或者三台以上,并且是单数,为什么是单数,主要是为了防止投票的时候,平票的情况。
在这里插入图片描述

如何选主

1、响应时间
2、从节点的数据完整性
3、稳定性,运行时间越长越稳定
4、如果三个情况都一样,那就更新runId来选。

在这里插入图片描述

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信仰_273993243

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值