図解 Raft コンセンサス アルゴリズム: リーダーを選出する方法

図解 Raft コンセンサス アルゴリズム: リーダーを選出する方法

[[393927]]

Raft は、リーダーを基準としてノード間のログの一貫性を実現するコンセンサス アルゴリズムです。Etcd、Consul など、ますます多くの分散システム フレームワークで使用されています。Seata も将来的に Raft を使用する予定です。今後の Kafka 2.8 でも Raft が導入され、Raft に基づいていくつかの改訂が行われます。Kafka 2.8 では KRaft と呼ばれています。

この観点から見ると、Raft はほとんどの分散システムに適したコンセンサス アルゴリズムです。Raft を学習すると、分散分野で成功するのに役立ちます。

この記事の主な内容は、Raft リーダー選出についての私の理解の要約です。

メンバー

私の理解する限り、Raft は強力なリーダー モデルです。つまり、すべてがリーダーに基づいており、各ノードの一連のコンセンサスとログの一貫性を実現するコンセンサス アルゴリズムです。

Raft には、リーダー、フォロワー、候補者の 3 つのメンバーシップ ID があります。

フォロワー: Raft では、リーダーのみがクライアントと対話します。したがって、選出が行われない場合、フォロワーはリーダーから送信されたメッセージを黙って処理し、データの冗長性として機能します。リーダーのハートビートがタイムアウトすると、フォロワーは自分自身を候補者として積極的に推奨します。

候補者: 候補者になると、他のノードに投票要求メッセージを送信し、他のノードからの投票を取得します。過半数の投票を獲得すると、リーダーとして選出されます。

リーダー: すべてのデータはリーダーの管轄下にあります。リーダーは、クライアントと対話し、リクエストを処理し、ログのレプリケーションを管理し、フォロワーにハートビート情報を継続的に送信し、フォロワー ノードのタイムアウトを常に更新してフォロワーが新しい選出を開始できないようにする唯一の役割でもあります。

選挙プロセス

以下に、新しく初期化された Raft クラスターを例に挙げます。

1. 初期状態

初期化後の各 Raft ノードのハートビート タイムアウトはランダムです。上記のように、ノード C はタイムアウトが最も短く (120 ミリ秒)、ターム番号は 0、役割はフォロワーです。

2. 投票をリクエストする

この時点では、どのノードもリーダーではありません。ノードはハートビートのタイムアウトを待った後、自分自身を候補として推薦し、クラスター内の他のノードに投票情報を要求します。この時点で、ターム番号は +1 であり、自己推薦は独自の投票を取得します。

3. フォロワーの投票

投票依頼情報を受け取った後、候補者が投票要件を満たしていれば、フォロワーはその候補者に貴重な一票を投じ(各任期においてフォロワーは最初の候補者にしか投票できず、後の候補者は投票できないため)、同時に任期番号を更新します。

4. 選出されたリーダー

ノード C が過半数の票を獲得すると、そのノードがこの任期のリーダーになります。

5. リーダーとフォロワーは心を通わせる

リーダーは定期的にハートビート メッセージを他のノードに送信して、自分がリーダーであることを通知し、フォロワーが新しいリーダーの選出を開始するのを防ぐためにフォロワーのタイムアウトを更新します。

用語について

上記の選挙プロセスから、Raft の選挙には任期メカニズムがあることがわかります。名前が示すように、各リーダーには独自の任期があります。リーダーが交代すると、任期も長くなります。Raft の任期では、次の詳細に注意する必要があります。

ノードは、自身のターム番号が他のノードのターム番号よりも小さいことがわかった場合、自身のターム番号を自身のターム番号よりも大きい値に更新します。

上記の選挙プロセスから、自分自身を候補者として指名するたびに、自分自身の投票が得られることがわかります。

候補者またはリーダーは、自分のターム数が他のノードよりも小さいことに気付いた場合、すぐにフォロワーに更新されます。これは非常に重要です。私が理解している限り、このメカニズムは、複数のリーダーが同時に存在する状況を解決できます。たとえば、リーダー A がハングアップした後、クラスター内の他のノードは新しいリーダー B を選出します。ノード B が回復すると、新しいリーダーからハートビート メッセージを受信し、ノード A はすぐにフォロワー状態に戻ります。

ノードが自身のターム番号よりも小さいターム番号のリクエストを受信した場合、そのリクエストは拒否されます。

ランダムタイムアウトについて

フォロワーが一定時間内にリーダーからハートビートを受信しない場合、新しいリーダー選挙ラウンドが開始されます。すべてのフォロワーが同時にリーダー選挙を開始した場合を想像してください。これはどのようなシナリオでしょうか? 同時に選挙が混乱するでしょうか? 選挙が同時に開始された場合、票が分散して選挙は失敗しますか?

Raft の選択プロセスを自分でデバッグして観察したい場合は、次の Web サイトにアクセスしてください。

ラフト

この記事はWeChatの公開アカウント「Backend Advanced」から転載したもので、以下のQRコードからフォローできます。この記事を転載する場合は、Backend Advanced Public Account にお問い合わせください。

<<:  ElasticSearch はどのようにして TDigest アルゴリズムを使用して数十億のデータのパーセンタイルを計算するのでしょうか?

>>:  ドローンが田舎に飛来、その価値は想像もできない

ブログ    
ブログ    
ブログ    

推薦する

タオ氏の新しい論文:有名な素数予想を部分的に証明、新しい方法は彼の古いモデルを使用する

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

...

アルトマン:解雇されて戻ってくるのは辛かったが、OpenAIにとっては良いことだ

1月8日、OpenAIのCEOサム・アルトマン氏は、タイム誌編集長とのインタビューで、昨年末に同社と...

2019年の人工知能の5つの主要な発展傾向

人工知能が開発を加速「中国人工知能産業市場展望及び投資戦略計画分析報告書」の統計によると、2017年...

ウエストワールドがやってくる: ロボットは独自の言語を使ってコミュニケーションとコラボレーションを学ぶ

人工知能研究チームOpenAIが発表した最新の報告書は、ロボットが自ら作成した新しい言語を使って互い...

このレビューでは、5年間にわたる89の研究を数え、ディープラーニングにおけるコードデータ拡張がどのように進んでいるかを示しています。

今日のディープラーニングと大規模モデルの急速な発展により、革新的なテクノロジーの絶え間ない追求がもた...

自然言語処理がデータ分析の世界をどう変えるか

【51CTO.com クイック翻訳】自然言語処理 (NLP) は、コンピューターが人間の自然な言語を...

...

...

2021年以降の人工知能について何かお考えはありますか?

中国科学技術協会、中国科学院、中国工程院、浙江省人民政府、杭州市人民政府、浙江省人工知能開発専門委員...

クラウドサービスが舞台を整え、AIが役割を果たす、これはI/Oに劣らないGoogleテクノロジーカンファレンスです

Google をよく知っていると思っている人でも、Cloud Next カンファレンスについては聞い...

YOLOの父は抗議を表明するためにCV業界を辞め、軍事やプライバシーのスヌーピングにAIアルゴリズムを使用することを拒否

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

クラウド ネイティブが新たな標準になりますが、人工知能はそれに備えていますか?

テクノロジーの発展に伴い、クラウド コンピューティング テクノロジーは進歩し続け、その目的も変化して...

海外の詐欺師はAIを使ってテイラー・スウィフトの声を合成し、「無料のキッチン用品」の広告を偽造して詐欺行為を行った。

ニューヨーク・タイムズ紙は現地時間1月10日、ここ数週間、フェイスブックなどのプラットフォームに、ア...