Findy さんの大規模データベース移行の技術的チャレンジと実践例 ( https://findy.connpass.com/event/320871/ ) にて登壇した際の資料になります。
この登壇ではデータベースの移行そのものではないものの、Raftの動作についての解説を行い、Raftへの理解を深め、Raftの得意な部分と苦手なワークロードを理解することで、Raftを用いたNewSQLの運用やトラブルを未然に防ぐことを目的としています。
スライド内に動画が使われている部分があり、スライド内では閲覧いただくことはできません。
以下にURLを掲載します。
https://drive.google.com/file/d/1XbJWAKTabMQJqrPPWn6LNi1IYA6omfGh/view?usp=sharing
https://drive.google.com/file/d/1Eu8rRDMxl3LQy6KM6MRuJrvhobe3AF9c/view?usp=sharing
-- 追記--
> termの説明で「今のリーダーが何代目のリーダーかを表す」と書かれていますが、あるterm内でリーダーが1人も選出されないことがあるので、termで何代目のリーダーかは表せなくないですか?
https://x.com/11Takanori/status/1801212885873602681
termは必ずしもリーダーを示すものではなく、また票割れや投票前の段階ではリーダーを指すとは限りません。
Raftの論文では
> Terms are numbered with consecutive integers.
といっており、リーダーかどうかは問いません
> log indexは単にlog entriesの中の当該logの位置を示すものなので、「今のリーダー」に言及しないほうが良さそう
https://x.com/komamitsu_tw/status/1801250356221104497
ログインデックスは今のリーダーにおけるものを指すわけではないため、正確には「何個目の命令か」となります。
-- 追記おわり--