Raft 対 MongoDB の予備選挙
質問
どうですか ラフトコンセンサスアルゴリズム MongoDB が予備選挙を選択する際に他の要素 (優先度など) を考慮するという点以外、MongoDB の予備選挙プロセスとは異なりますか?
解決
MongoDB 2.4 におけるコンセンサス アプローチの主な違いは次のとおりです。
ラフトは 強いリーダー モデル。リーダーは、リーダーから他のサーバーへのレプリケーションとデータ フローを管理する責任があります。MongoDB レプリカ セットでは、セカンダリは操作ログに従います (オプログ) 上流ホストのプライマリまたは新しい oplog を持つセカンダリのいずれかになります。
Raft には考慮すべきノード状態が 3 つだけあります。リーダー (プライマリー)、フォロワー (セカンダリー)、または候補者 (指名されたプライマリー)。MongoDB には 追加のノード状態 などの潜在的なエラー状態をさらに含めることを検討します。
RECOVERING
またはSHUNNED
ノード、または 遅延レプリカ セット メンバー.Raft では、各ノードは選挙期間ごとに 1 回だけ候補ノードに投票できます。MongoDB では、レプリカ セット構成の一部としてノードごとの投票を調整できるため、一部のノードが投票しないか、複数の投票を持つ可能性があります (注:複数投票設定は現在非推奨になっています。 MongoDB 2.5 開発ブランチ).
ラフトは 共同合意 このアプローチにより、構成変更中にクラスターが動作し続けることが可能になります。MongoDB では、新しいプライマリを選択するには投票ノードの絶対多数が必要です。選択の進行中は、レプリカ セットにはプライマリがないため、書き込みを受け入れることができません。
より詳細な情報については、Raft 紙を比較してください。 理解可能なコンセンサスアルゴリズムを求めて 上のドキュメントを使って MongoDB レプリカ セットの選択.