CloudflareのMeerkat:リーダー不在のグローバル合意サービス
CloudflareがQuePaxaアルゴリズムを搭載した実験的な合意サービスMeerkatを発表。Raftのようなリーダー選出のボトルネックなしに、グローバルネットワーク全体で強い一貫性と耐障害性を提供する。

Cloudflareの研究チームは、新しい分散合意サービスMeerkatを構築している。これは、同社のグローバル制御プレーンが抱える根本的な問題、すなわち330以上のデータセンター間で強い一貫性を維持しつつ、Raftのようなリーダーベースの合意アルゴリズムに付きまとう可用性の低下を回避することを目的としている。
Meerkatは、2023年にEPFLの研究者らが発表した合意アルゴリズムQuePaxaを搭載している。Raftでは単一のリーダーがすべての書き込みを処理し、リーダー障害が発生するとタイムアウト駆動の選出が行われ、システムが停止する可能性がある。一方、QuePaxaではすべてのレプリカがいつでも書き込みを実行できる。タイムアウトによる進行停止が発生しないため、レイテンシが予測しにくい広域ネットワーク、まさにCloudflareの環境に適している。
このサービスはまだ実験段階で社内限定であり、当初はレプリケーションデータベースのリーダーシップやAIモデルインスタンスの配置情報など、制御プレーンの小さな状態を対象としている。しかし、その意味は大きい。Meerkatが実証されれば、リーダー不在による複数のインシデントをCloudflareで引き起こしてきたRaftベースのシステムを置き換える可能性がある。
Meerkatが提供するもの
Meerkatは線形化可能性(linearizability)を提供する。これは最も強い一貫性の形式であり、書き込み後のすべての読み取りがその書き込みを確実に認識できる。これにより、開発者は分散状態をあたかもシングルスレッドマシン上のローカルメモリであるかのように推論でき、弱い一貫性モデルによる精神的負担がなくなる。
耐障害性の面では、Meerkatはマシンの過半数が生存し通信可能である限り、読み取りと書き込みの両方で利用可能であり続ける。単一のマシン障害やリンク劣化ではシステムは停止しない。これは、リーダーを失うと新しいリーダーが選出されるまで利用不可になる可能性があるRaftに対する直接的な改善である。
仕組み
開発者はMeerkatレプリカのクラスタを要求し、各レプリカは他のすべてのレプリカと接続される。すべてのレプリカが合意に参加し、読み取りと書き込みの両方を受け付けることができる。クライアントはキーバリューストアのgetやputのようなアプリケーション固有のリクエストを任意のレプリカに送信する。レプリカはリクエストをログイベントに変換し、合意アルゴリズムを介してすべてのレプリカに配布し、すべてのレプリカがまったく同じログを維持する。アプリケーション(キーバリューストアなど)はそのログを消費して状態を構築する。
特筆すべきは、読み取りリクエストでさえも線形化可能性を確保するために分散ログイベントを生成することだ。これはトレードオフであり、より強い一貫性を得る代わりに追加の調整コストがかかるが、Cloudflareは制御プレーンのワークロードには必要だと判断している。
結論
Meerkatは、リーダー不在の合意をグローバル規模で本番運用に持ち込む野心的な試みである。成功すれば、Cloudflareのインフラストラクチャの基盤となり、リーダー選出の脆弱性なしに強い一貫性を持つ制御プレーン状態を実現できる。チームは今後の投稿で詳細を共有する予定だが、方向性は明確だ。Raftのタイムアウトだけが合意を構築する唯一の方法ではない。
ディスカッション
0 件のコメント
最初のコメントを投稿しましょう。