普段のアプローチでは、おそらくリーダーの決闘の可能性は低いと思われる無作為タイムアウトを使用することです。紙の中で「タイムアウト」を検索すると、これが言及されます。
安定したリーダーが出現して進展するのに平均でX秒かかる場合(最小のメッセージラウンドトリップ数で見積もることができます)、各ノードには、 Xの倍数。リーダーになるたびに新しい乱数を使用することで、リーダーの大戦の確率は低くなります。
ランダムタイムアウトの上限としてXの大きな倍数を設定した場合、リーダーの延長戦の確率は低くなります。しかし、リーダーが出現するまでの平均時間も長くなっています。それはトレードオフです。
非常に高速なフェイルオーバーが必要な実装では、タイムアウトの小さいランダムな間隔を使用することがありますが、リーダーの決闘が迅速に解決する仕組みを実装しようとします。任意のメカニズムを発明することができます。
1つのノードがリーダーになるという利点があることを保証する簡単なメカニズムは、次のとおりです。各ノードには、投票用紙の注文に使用される固有の番号があります。リーダーの決闘の間、各ノードは指数バックオフを使用することができます。指数バックアップは、独自の固有番号でスケーリングされます。例えば、リーダーになることができなかったそれぞれのノード番号がNであれば、そのタイムアウトウィンドウの上限に1 + 1/Nを掛けることができる。これは、任意の決闘中に、最も高いNを有するノードが、他のノードがより速くバックオフするので、リーダーになることを試みることにおいてより積極的であることを意味する。
恥知らずのプラグイン:https://simbo1905.wordpress.com/category/paxos/でPaxosに関する私のブログをチェックアウトしてください – simbo1905