🕌

[超初心者向け!] 分散アルゴリズム Raft の基本情報を図でわかりやすく解説[その1]

2024/06/24に公開

はじめに

recovery phase における Raft プロトコルを解説してみようと思います!

この記事の対象者

・分散トランザクションに興味がある人
・分散アルゴリズムに興味がある人

紹介する論文 / 参考文献

Diego Ongaro, John Ousterhout (2014) "In Search of an Understandable Consensus Algorithm (Extended Version)",https://raft.github.io/raft.pdf

目次

5.0 Raftとは?
5.1 基本情報
5.2 Election
5.3 Log Replication
5.4 Safety

Raftとは ?

その前にトランザクション の復習

トランザクション=concurrency control phase + recovery phase です。

  1. concurrency control phase → 1つのデータベースに対して複数のCPUが処理
  2. recovery phase → 複数のデータベースに処理内容を同期

recovery phase が必要な理由

データベース1個の場合 → クラッシュした場合 THE END.
データベース複数の場合 → クラッシュしてもコピーがあるから大丈夫

recovery phase において複数のデータベースに処理内容を同期することで、データベースの信頼性が上がります

もっとトランザクション復習したいよっていう方はこちらから確認してください!
https://zenn.dev/risaaa/articles/1e7b632db3f4bf

Raft は recovery phase 内の一つのプロトコル

recovery phase では複数のデータベースに処理内容を同期しますが、異なるデータベースに同時にデータを同期させようとすると、複雑になってしまいます

データベース1,2,3を同時に同期させるの難しいんですけど...
そこで Raft では一つのデータベースに処理内容を反映させてから、そのデータベースをコピーする手法をとっています

この方がシンプルですね

5.1 Raft 基本情報

サーバの状態は3つある

  1. Leader -> クライアントからの要求を管理
  2. Candidiate -> Election時のLeader候補者
  3. Follower -> Leaderからの指示を受けるだけ (RPC)

時間軸において抑えるべきは3つ

  1. Election が開始されるまでの間
  2. Election(次回説明)
  3. Operation(次次回説明)

1. Election が開始されるまで

1.最初はみんなフォロワー

通常データベースは5台あり、最初は全員がフォロワーです

2.リーダーからの AppendEntriesRPC がないため Election が開催される

Candidate, Leaderがいないため RPC がなく Election が開始される

RPC の種類

① RequestVoteRPC: Election時に必要で Candidate → Followerに送られる
② AppendEntriesRPC: Operation 時に必要で Leader → Followerに送られる

まとめ

・ データベースの状態はLeader, Candidate, Followerのいずれか
・ RPC がないと Election が開始される

最後まで見てくださりありがとうございます
次は 5.2 Election について解説します!

https://zenn.dev/risaaa/articles/deba2abae314ec

Discussion