资讯专栏INFORMATION COLUMN

Redis Cluster节点故障探测算法笔记

tangr206 / 613人阅读

摘要:本笔记是对的归纳总结状态转换图每个在本地维护了一张其他的状态表,并根据算法更新这张表里的的状态修改状态表里的的状态为在文档中称之为,不需要共识大多数同意。下面是状态转换图,例举的是观察的例子少数派和多数派多数派拥有多数的一方,可含有。

本笔记是对Redis Cluster Spec - Failure Detection的归纳总结

状态转换图

每个Node在本地维护了一张其他Node的状态表,并根据Failure Detection算法更新这张表里的Node的状态

修改Node状态表里的Node的状态为GOOD(在文档中称之为Clear Flags)、PFAIL,不需要共识(大多数Master Node同意)。

修改Node状态表里的Node的状态为FAIL则需要共识,一旦设置成功要将这个消息传播给所有能连接的Node,其他Node收到这个信息后也要更新本地Node状态表,将对应Node的状态更新为FAIL。

下面是状态转换图,例举的是Node A观察Node B的例子:

少数派和多数派

多数派:拥有多数Master的一方,可含有Slave。

少数派:拥有少数Master的一方,可含有Slave。

少数派视角

少数派只会看到大多数Master处于PFAIL/FAIL状态,0-所有Slave处于PFAIL/FAIL状态。

多数派视角

多数派只会看到少数Master处于PFAIL/FAIL状态,0-所有Slave处于PFAIL/FAIL状态。

不会存在以下情况:多数派看到大多数Master处于FAIL状态,因为大多数Master处于FAIL就意味着活着的Master们变成了少数派,这就矛盾了。

一些自问自答

Q:为何少数派能够看到Master处于FAIL状态?不是说要大多数Master同意才能变成FAIL状态吗?
A:考虑这个情况,在Partition发生的前一秒某些Master被决定为FAIL,随即Partition发生,那么在少数派眼里这些Master依然是处于FAIL状态的。

Q:这里的每个Node是Slave还是Master呢?
A:随便,只要是Node就行。

Q:既然每个Master独占的负责Slots,那么少数派继续工作为啥不可以,反正各自管各自的。
A:因为在多数派方,这个Master有可能会被Slave顶替,如果允许少数派继续工作,那么就会形成两个Master,造成split brain

Q:少数派节点是如何知道自己应该停止工作的?
A:它发现大多数Master变成了PFAIL / FAIL 状态时,就知道自己不能工作了,Redis源码里是这么写的。

Q:多数派节点时如何知道自己应该停止工作的?
A:如果这个Cluster要求所有Slots被覆盖,那么当有一个Master处于FAIL状态时,便停止工作,见源码。如果不要求,则继续工作,只不过部分Slots的操作会报错。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37265.html

相关文章

  • 【独家】终生受用的Redis高可用技术解决方案大全

    摘要:哨兵是社区版本推出的原生高可用解决方案,部署架构主要包括两部分集群和数据集群,其中集群是由若干节点组成的分布式集群。自研推荐推荐自研的高可用解决方案,主要体现在配置中心故障探测和的处理机制上,通常需要根据企业业务的实际线上环境来定制化。 最近很多朋友向我咨询关于高可用的方案的优缺点以及如何选择合适的方案线上使用,刚好最近在给宜人贷,光大银行做企业内训的时候也详细讲过,这里我再整理发出来...

    cc17 评论0 收藏0
  • 【独家】终生受用的Redis高可用技术解决方案大全

    摘要:哨兵是社区版本推出的原生高可用解决方案,部署架构主要包括两部分集群和数据集群,其中集群是由若干节点组成的分布式集群。自研推荐推荐自研的高可用解决方案,主要体现在配置中心故障探测和的处理机制上,通常需要根据企业业务的实际线上环境来定制化。 最近很多朋友向我咨询关于高可用的方案的优缺点以及如何选择合适的方案线上使用,刚好最近在给宜人贷,光大银行做企业内训的时候也详细讲过,这里我再整理发出来...

    helloworldcoding 评论0 收藏0
  • Redis Cluster配置传播及故障恢复笔记

    摘要:本笔记是对的归纳总结。传播的配置赢得选举之后会在己侧更新上的归属信息,然后在定时的中将这个信息传播出去。这个过程不需要共识,因为只是修改的归属,也不会修改。同样不需要大多数同意。 本笔记是对Redis Cluster Spec - Configuration handling, propagation, and failovers的归纳总结。 Epoch 可以把Epoch当作是一个版...

    Tonny 评论0 收藏0
  • Redis Cluster

    摘要:通过作为版本号来实现集群配置的一致性。配置信息的一致性主要依靠和,两者除了不同,其余字段语义均相同,消息体为数据。每一个节点向其他节点较为频繁的周期性发送消息和接受响应。同一样,具备完整的节点故障发现故障状态一致性保证主备切换机制。 Redis3.0以后,节点之间通过去中心化的方式提供了完整的sharding(数据分片)、replication(复制机制、Cluster具备感知准备的能...

    187J3X1 评论0 收藏0
  • 进阶的Redis之哈希分片原理与集群实战

    摘要:前面介绍了进阶的之数据持久化与和进阶的之原理及实战,这次来了解下的集群功能,以及其中哈希分片原理。哈希值为,,则落在第三台机上。一致性哈希算法在年,麻省理工学院的等人提出了一致性哈希算法,为的就是解决分布式缓存的问题。 前面介绍了《进阶的Redis之数据持久化RDB与AOF》和《进阶的Redis之Sentinel原理及实战》,这次来了解下Redis的集群功能,以及其中哈希分片原理。 集...

    frank_fun 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<