Raft アルゴリズム
は分散システム開発の最初の選択肢ですコンセンサスアルゴリズム
。たとえば、Etcd や Consul が今人気です。
このアルゴリズムをマスターすれば、フォールト トレランスとほとんどのシナリオの を簡単に処理できます。# 一貫性
要件。たとえば、分散構成システム、分散 NoSQL ストレージなどは、システムの単一マシンの制限を簡単に突破できます。 Raft アルゴリズムは、リーダーに基づいたすべての方法を通じて、各ノードの一連の値とログの一貫性についての合意を達成します。
#2. Raft の役割
Candidate (Candidate):
Candidate
リーダー:
横暴な社長
下の図に示すように、フォロワー、候補者、リーダーを表すために 3 種類の数字が使用されます。 役割
3. 単一ノード システム
3.2 クライアント
左側の緑の実線の円はクライアント、右側の青の実線の円はノード a です。 (ノード a )。 Term は後述する任期を表します。クライアント
3.3 クライアントはサーバーにデータを送信します
クライアントはデータを単一のサーバーに送信します。ノード サーバー 更新操作により、データベースに格納されている値が 8 に設定されます。スタンドアロン環境 (単一サーバー ノード) では、クライアントがサーバーから取得する値も 8 です。一貫性を確保するのは非常に簡単です。クライアントはサーバーにデータを送信します
3.4 複数のノードはどのように一貫性を確保しますか?
しかし、複数のサーバー ノードがある場合、整合性を確保するにはどうすればよいでしょうか?たとえば、a、b、c という 3 つのノードがあるとします。以下に示すように。これら 3 つのノードはデータベース クラスターを形成します。クライアントがこれら 3 つのノードで更新操作を実行する場合、3 つのノードに格納されている値が一貫していることを確認するにはどうすればよいでしょうか?これは分散一貫性の問題です。 Raft アルゴリズムは、この問題を解決するために登場しました。もちろん、これを保証できるプロトコルは他にもありますが、この記事では Raft アルゴリズムのみに焦点を当てます。マルチノード クラスターでは、ノード障害やパーティション エラーなどの異常な状況下で、Raft アルゴリズムはクラスター内に同時にリーダーが 1 つだけ存在することをどのように保証しますか? Raft アルゴリズムによるリーダー選出のプロセスを説明しましょう。
初期状態では、クラスター内のすべてのノードがフォロワーです。状態。
下図に示すように、3つのノード(Node) a、b、cがあり、項(Term)は0です。
初期状態
Raft アルゴリズムは、毎回ランダムなタイムアウトの特性を実装しています。各ノードがリーダー ノードからのハートビート情報を待つタイムアウト間隔はランダムです。たとえば、ノード A の待機タイムアウト間隔は 150 ミリ秒、ノード B の待機タイムアウト間隔は 200 ミリ秒、ノード C の待機タイムアウト間隔は 300 ミリ秒です。すると、aが先にタイムアウトになりますが、まずリーダーの心拍情報を待たずにタイムアウトしてしまいます。次の図に示すように、3 つのノードのタイムアウト タイマーが実行を開始します。
タイムアウト時間
ノード A のタイムアウト時間が経過すると、ノード A は 候補 となり、期間番号が増加し、期間値は 0 から 1 に更新されます。そして私自身に一票を投じました。
候補者になる
候補者がリーダーになれる方法を見てみましょうの。
リーダー選挙
英語ではタームと呼ばれ、リーダーには任期があります。
クラスターが N 個のノードで構成されていると仮定すると、過半数は少なくとも N/2 1 です。たとえば、3 ノードのクラスターの場合、ほとんどは 2 ノードです。
複数のノードが同時に投票を開始するのを防ぐために、各ノードにはランダムな選出タイムアウトが割り当てられます。この間、ノードは候補になることができず、タイムアウトになるまで待つことしかできません。たとえば、上記の例では、ノード A が最初にタイムアウトし、最初に候補になります。この賢い設計により、ほとんどの場合、同時に選挙を開始するのではなく、1 つのサーバー ノードだけが最初に選挙を開始するため、投票分割による選挙失敗の数が減少します。
候補者になる
リーダー ノードが失敗すると、新しい選挙ラウンド。次の図に示すように、リーダー ノード A に障害が発生した場合、ノード B とノード C がリーダーを再選出します。
リーダーの障害
Raft アルゴリズムは次の方法を使用してリーダー選挙を実施し、1 期にリーダーが 1 人だけになるようにし、リーダーが選出される可能性を大幅に減らします。選挙失敗。状態。
この記事では、アニメーション グラフィックを使用して、Raft アルゴリズムがリーダーを選出する方法を説明し、理解しやすくしています。
以上が分散システムが知っておくべきコンセンサスアルゴリズム: Raftの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。