redisCluster之主观下线与客观下线

主观下线:

      

       节点之间会定期的执行ping/pong消息来证明节点之间的连通性,若节点一向节点二发送ping消息之后收到pong消息,那么节点一将会更新最后一次与节点二的通信时间,若没有收到pong消息,那么节点一与节点二之间的链接将会断开,之后节点一再次执行ping消息,若与节点二之间的最后通信时间超过指定的时间,那么节点二将被节点一标记为主观下线。

客观下线:

       节点之间通信会携带一些必要的消息,其中就包含标记某节点为客观下线状态,节点中都包含了相关节点状态的链表信息,若节点的客观下线的记录超过半数,那么尝试执行客观下线。

尝试客观下线流程:

下线主节点之后,进行故障恢复:

首先是判断该主节点的slave节点是否具有当主节点的资格,若该节点与主节点断开连接超过一定的时间那么就没有资格

之后根据从节点与主节点之间的偏移量进行延迟选举,保证偏移量最小的slave节点获得更多的票

选出节点之后,从节点执行slave none one 变成主节点,从节点将主节点的槽移交给自己完成故障恢复。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Redis Sentinel是Redis官方提供的一种高可用性解决方案,其中主观下线客观下线是实现Redis高可用性的关键机制之一。 主观下线是指Sentinel节点认为某个Redis实例已经下线了,但是其他Sentinel节点并不一定认同这一观点。这种情况可能是由于网络抖动等原因导致的误判。在Sentinel节点发现Redis实例不可用时,会向其他Sentinel节点发送信息,如果其他Sentinel节点也认为这个Redis实例已经下线,那么这个Redis实例就会被判定为客观下线客观下线是指在Sentinel节点之间达成共识,认为某个Redis实例已经下线。Sentinel节点会通过心跳检测等机制定期检测Redis实例的可用性,如果在一定时间内没有收到Redis实例的回复,那么Sentinel节点就会认为这个Redis实例已经下线,并向其他Sentinel节点发送信息,请求其他Sentinel节点确认。 在Redis Sentinel中,实现主观下线客观下线的命令主要有以下几个: 1. SENTINEL is-master-down-by-addr命令:用于检查Redis主节点是否下线,主要用于实现主观下线。 2. SENTINEL get-master-addr-by-name命令:用于获取Redis主节点的地址信息。 3. SENTINEL reset命令:用于重置Sentinel节点的状态信息,主要用于实现客观下线。当Sentinel节点在一定时间内没有收到Redis实例的回复时,会调用该命令向其他Sentinel节点发送信息,请求确认Redis实例的下线状态。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值