邮件是否放到了RAFT上?

时间:2019-04-06 20:31:46

标签: raft

我正在阅读有关筏的信息,但是在进行网络分区后达成共识时,我有些困惑。

因此,考虑一个由2个节点组成的集群,即1个领导者,1个跟随者。

在进行分区之前,先写入X条消息,然后成功复制它们,然后再想象是由网络问题引起的分区,所以有2个分区,A(前领导者)和B(前关注者)现在都是领导者(接收写入):

main

在发生分区事件之后,我们已经弄清楚了,会发生什么?

a)我们选出1位新领导人并考虑其履历吗? (删除新关注者的消息? 例如:

before partition | Messages  |x| Partition   | Messages  
Leader           | 0 1 2 3 4 |x| Partition A | 5  6  7  8  9
Follower         | 0 1 2 3 4 |x| Partition B | 5' 6' 7' 8' 9'

甚至:

0 1 2 3 4 5 6 7 8 9 (total of 10 messages, 5 dropped)

(取决于要成为领导者的节点)

b)我们选出一位新领导人,并找到一种使所有信息达成共识的方法吗?

0 1 2 3 4 5' 6' 7' 8' 9' (total of 10 messages, 5 dropped)

如果是b,有什么具体方法吗?还是取决于客户端的实现? (例如:邮件时间戳...)

1 个答案:

答案 0 :(得分:0)

当领导者当选并成功写出该词的初始日志条目时,领导者日志将被视为“日志”。但是,根据您的情况,起始前提是不正确的。在由2个节点组成的集群中,一个节点需要2个投票才能成为领导者,而不是1。因此,在网络分区中,任何一个节点都不会成为领导者。