[超初心者向け!] 分散アルゴリズム Raft の基本情報を図でわかりやすく解説[その1]
はじめに
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 です。
- concurrency control phase → 1つのデータベースに対して複数のCPUが処理
- recovery phase → 複数のデータベースに処理内容を同期
recovery phase が必要な理由
データベース1個の場合 → クラッシュした場合 THE END.
データベース複数の場合 → クラッシュしてもコピーがあるから大丈夫
recovery phase において複数のデータベースに処理内容を同期することで、データベースの信頼性が上がります
もっとトランザクション復習したいよっていう方はこちらから確認してください!
Raft は recovery phase 内の一つのプロトコル
recovery phase では複数のデータベースに処理内容を同期しますが、異なるデータベースに同時にデータを同期させようとすると、複雑になってしまいます
データベース1,2,3を同時に同期させるの難しいんですけど...
そこで Raft では一つのデータベースに処理内容を反映させてから、そのデータベースをコピーする手法をとっています
この方がシンプルですね
5.1 Raft 基本情報
サーバの状態は3つある
- Leader -> クライアントからの要求を管理
- Candidiate -> Election時のLeader候補者
- Follower -> Leaderからの指示を受けるだけ (RPC)
時間軸において抑えるべきは3つ
- Election が開始されるまでの間
- Election(次回説明)
- 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 について解説します!
Discussion