2016-10-07 4 views
1

私は筏に3つのノードを持っています。ネットワーク障害のために、ノード3は他の2つのノードから分離される。そして、ノード3は常に候補になり、requestVote argsを他の人に送り、十分な投票を得ることができないことがわかります。次に、ノード3はその用語を増やし、投票を再度試みる。したがって、ノード3の用語はログ102, 103, 104, 105をコミットする他のノードよりもかなり大きいです。リーダーはRAFTでフォロワーが大きなタームナンバーで回復したときにログをどのように複製できますか?

しばらくすると、ネットワークが回復し、ノード3が再びグループに参加し、フォロワーになります。しかし、その大きな期間のために、リーダー(ノード1)からのA​​ppendEntriesを常に拒否します。ノード3は102から105までのログをどのように回復できますか?

Node 1(leader): 
* logs [101, 102, 103, 104, 105] 
* term [1, 2, 2, 2, 2 ...] 
Node 2 (follower) 
* logs [101, 102, 103, 104, 105] 
* term [1, 2, 2, 2, 2 ...] 
Node 3 
* logs [101] 
* term [1, 2, 3, 4, 5 ...] 

答えて

4

は、あなたはそれがクラスタに再加入した後、リーダーはそのフォロワーからの応答を処理する方法を見ています。リーダーがAppendEntries応答を受信すると、別のノードの語句がより高いことを示すリーダーは自身の用語を更新し、新しい選挙を強制的に実行するためにをステップダウンします。選挙の議定書では、すべての候補者もより高い任期を見つけ、自分の言葉を更新するでしょう。そして、依然としてコミットされたエントリーをすべて持っているリーダーが選出され、そのパーティショニングされたフォロワーを持つことで委員会のエントリーがそのエントリーに複製されます。

関連する問題