1. いかだの概要 Raft アルゴリズムは、分散システム開発に適したコンセンサス アルゴリズムです。たとえば、Etcd や Consul が現在人気があります。 このアルゴリズムを習得すれば、ほとんどのシナリオのフォールト トレランスと一貫性の要件を簡単に処理できます。たとえば、分散構成システム、分散 NoSQL ストレージなどは、システムの単一マシンの制限を簡単に突破できます。 Raft アルゴリズムは、リーダーを基準として一連の値と各ノードのログの一貫性に関するコンセンサスを実現します。 2. いかだの役割 2.1 役割 フォロワー: リーダーからのメッセージを黙って受け取る一般人。リーダーのハートビートメッセージがタイムアウトすると、リーダーは率先して立ち上がり、自分自身を候補者として推薦します。 候補者: 候補者は他のノードに投票を通知するために、他のノードからの投票 RPC メッセージを要求します。過半数の票を獲得すれば、リーダーに昇格する。 リーダー:私は横暴な大統領です。すべては私次第です。書き込み要求を処理し、ログのレプリケーションを管理し、ハートビート メッセージを継続的に送信して、他のノードに「私はリーダーです。まだ生きています。私に代わる新しいリーダーを探すことなく、新しい選挙を開始しないでください」と通知します。 下の図に示すように、フォロワー、候補者、リーダーを表すために 3 種類のグラフが使用されています。 役割 3. シングルノードシステム 3.1 データベースサーバー ここで、単一ノード システムがあると想像してみましょう。このノードはデータベース サーバーとして機能し、値 X を格納します。 データベースサーバー 3.2 クライアント 左側の緑の実線円はクライアント、右側の青の実線円はノード a です。 Term は任期を表します。これについては後で説明します。 クライアント 3.3 クライアントがサーバーにデータを送信する クライアントは、単一ノード サーバーに更新操作を送信し、データベースに格納されている値を 8 に設定します。スタンドアロン環境 (単一サーバー ノード) では、クライアントがサーバーから取得する値も 8 になります。一貫性を確保するのは非常に簡単です。 クライアントはサーバーにデータを送信する 3.4 複数のノード間の一貫性を確保するにはどうすればよいですか? しかし、サーバー ノードが複数ある場合、一貫性をどのように確保すればよいのでしょうか?たとえば、a、b、c という 3 つのノードがあるとします。下の図の通りです。これら 3 つのノードがデータベース クラスターを形成します。クライアントがこれら 3 つのノードを更新する場合、3 つのノードに格納されている値の一貫性をどのように確保できるでしょうか?これは分散一貫性の問題です。 Raft アルゴリズムはこの問題を解決するために設計されています。もちろん、これを保証できる他のプロトコルもありますが、この記事では Raft アルゴリズムにのみ焦点を当てます。 マルチノード クラスターでは、ノード障害やパーティション エラーなどの異常な状況において、Raft アルゴリズムはどのようにしてクラスター内に同時にリーダーが 1 つだけ存在するようにするのでしょうか。以下では、Raft アルゴリズムでリーダーを選出するプロセスについて説明します。 IV.リーダーを選出するプロセス 4.1 初期状態 最初は、クラスター内のすべてのノードがフォロワー状態にあります。 下の図に示すように、3 つのノード a、b、c があり、それらの項はすべて 0 です。 初期状態 4.2 候補者になる Raft アルゴリズムはランダム タイムアウトの機能を実装しており、各ノードがリーダー ノードのハートビート情報を待機するタイムアウト間隔はランダムです。たとえば、ノード A の待機タイムアウト間隔は 150 ミリ秒、ノード B の待機タイムアウト間隔は 200 ミリ秒、ノード C の待機タイムアウト間隔は 300 ミリ秒です。次に、リーダーからのハートビート メッセージを受信しないため、まずタイムアウトになります。次の図に示すように、3 つのノードのタイムアウト タイマーが実行を開始します。 タイムアウト ノード A のタイムアウト期間に達すると、ノード A は候補となり、その用語番号を増やし、用語値が 0 から 1 に更新され、自身に投票します。
候補者になる 4.3 投票 候補者がリーダーになる方法を見てみましょう。 リーダー選挙
4.4 任期 英語では「term」であり、リーダーには任期があります。
4.5 選挙ルール 任期中、リーダーは、リーダー自身に問題 (ダウンタイムなど) またはネットワークの問題 (遅延) が発生し、他のノードが新しい選挙ラウンドを開始するまで、常にリーダーのままです。 選挙では、各サーバー ノードは任期番号に対して最大 1 票を投じますが、一度投じられると無効になります。 4.6 最も クラスターが N 個のノードで構成されていると仮定すると、過半数は少なくとも N/2+1 になります。たとえば、3 つのノードのクラスターの場合、過半数は 2 です。 4.7 ハートビート タイムアウト 複数のノードが同時に投票を開始するのを防ぐために、各ノードにランダムな選出タイムアウトが割り当てられます。この間、ノードは候補になることはできず、タイムアウトするまで待つことしかできません。たとえば、上記の例では、ノード A が最初にタイムアウトし、最初に候補になります。この巧妙な設計により、ほとんどの場合、複数のサーバー ノードが同時に選挙を開始するのではなく、1 つのサーバー ノードだけが選挙を開始するため、票の分割による選挙失敗の可能性が減ります。 候補者になる 5. リーダーの失敗 リーダーノードが失敗した場合、新しいラウンドの選挙がトリガーされます。下の図に示すように、リーダーノード B に障害が発生した場合、ノード A と B がリーダーを再選出します。 リーダーの失敗
要約する Raft アルゴリズムは、次の方法でリーダーを選出し、1 期につきリーダーが 1 人だけになるようにすることで、選出の失敗数を大幅に削減します。
この記事では、Raft アルゴリズムがリーダーを選出する仕組みをアニメーション グラフィックを使用して説明しており、理解しやすくなっています。 この記事はWeChatの公開アカウント「Wukong Chats about Architecture」から転載したものです。下のQRコードからフォローできます。この記事を転載する場合はWukong Chat Architecture公式アカウントまでご連絡ください。 |
<<: 上海は「両会」のオンライン相談プラットフォームの設立を先導し、ガバナンスのデジタル変革を加速
>>: パブリッククラウド市場の状況について、私はこれら2つの権威あるレポートに「先導」されました
潮が引いて初めて、誰が裸で泳いでいるかが分かります。 2年間の試練と苦難を経て、国内の共同購入業界に...
持続可能なテクノロジーの観点でクラウド コンピューティングがどの程度の順位にランクされるかは、環境に...
[[228043]]ブロックチェーン(英: Blockchain、block chain)は、分散型...
SEO最適化は現在、産業化に向けて進んでいます。私がネットワーク最適化を始めた頃は、クリエイティブな...
百度がアルゴリズムの革新、特に「原点回帰計画」の立ち上げ以降、ウェブサイト自体の価値を重視しているこ...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますウェブサイ...
現在、360 SearchとBaiduが検索ビジネス戦争を始めました。ウェブマスターにとって、これは...
今日の世界ではテクノロジーは常に進化しています。新しいアプリケーション、新しいデバイス、新しい統合が...
ご存知のとおり、ウェブサイトの最適化は、サイクルが長く、結果がゆっくりと出ますが、メリットは永続的な...
分析: ①分析統計ツールをインストールする。お金をかけたくない場合は、Google Analytic...
今日、仕事でウェブマスターツールを使用して包括的な情報を検索したときにショックを受けました。今日のコ...
オンプレミス システムと並行してホスト型クラウド コンピューティング インフラストラクチャを急いで導...
百度が人人傘下の諾米を買収してから4カ月後、諾米は初の人事調整を行った。南都の記者は、Nuomi.c...
ウェブサイトの SEO におけるリンクの役割は明らかです。一般的に、インバウンド リンクが多ければ多...
少し前にメディアで大きく報じられた、AWS ChinaがGuanghuan New Networkに...