Cloudflare Meerkat:世界規模の分散型コンセンサス基盤を解剖する
Cloudflare Meerkat - Globally distributed consensus
Cloudflare Meerkat - Globally distributed consensus
Cloudflareが発表した「Meerkat」について。これは、地理的に分散した環境下で高い整合性を維持するためのグローバル分散コンセンサス・プロトコルです。エッジネットワークの特性を活かし、どのようにして低遅延かつ堅牢な合意形成を実現しているのか、その技術的アプローチが注目されています。
ネットワーク環境が悪い中でRaftクラスターと格闘した経験があれば、リーダーのフラッピング(不安定な切り替わり)、選挙の嵐、レイテンシの急増といった問題に悩まされたことがあるはず。それに比べれば、これは正直かなり良さそう。不安定なネットワークに悩まされている人たちにはかなり役立つと思う。
この記事、肝心なところが少し掴みにくい。Cloudflareの要件(強固なリーダーを置かないなど)を考えると、比較対象はすぐにPaxosクラスのアルゴリズムのような「リーダーレス」なプロトコルになるはず。Raftと比較して「Meerkatはリーダーレスだから優れている」と言うのは混乱を招く。RaftはPaxosを調整して、まさに「強固なリーダー」を持たせるためのものだからね。記事の3/4まで読んだけど、結局何がユニークなのかよくわからない。
おそらくここでのユニークなアイデアは、QuePaxaの「ライブネス(生存性)を確保するためにタイムアウトを避ける」という点なんだろうけど、QuePaxaに関する具体的な議論は最後の1段落、それも実際には数文に留まっている。
個人的な意見としては、この記事は「コンセンサスプロトコルと線形化可能性:短い解説」や「Paxos vs Raft」といったタイトルであるべきだった気がする。主張したいことが伝わってこないし、ターゲット層がどこなのか少しぼやけている感じ。
正直なところ、自前で暗号ライブラリや分散コンセンサス実装を作っている人たちについては懐疑的だけど、Cloudflareならやり遂げられるかもね。分散コンセンサスの現状を前進させようとする取り組みはいいことだ。
ポイント:
今後どうなるか楽しみにしている!
Aphyr(分散システム専門のテスター)を呼び出すバットシグナルみたいなものが脳裏をよぎったよ。Jepsenによる分析記事が出るのが楽しみ。
これかなり面白いね。etcdもコンセンサスにRaftを使っているから恩恵があるかもしれない。etcdはセットアップ(通常はKubernetesのコントロールプレーン初期化時)によってはスプリットブレインの問題が起きることがあるから。
「QuePaxaというコンセンサスアルゴリズムで動作するMeerkatという新しい分散コンセンサスサービス。2023年にEPFLの研究者が公開。QuePaxaはRaftと異なり、全てのレプリカが常に書き込み可能で、タイムアウトによる停止が発生しない」
興味深いね。
ここで興味深いのは、これが非同期コンセンサスアルゴリズム(QuePaxa)の本番環境における初の実装になる点だろう。PaxosやRaftなどはすべて部分同期型で、タイムアウトに依存し、メッセージ遅延がタイムアウト期間に比べて十分に小さい場合にのみ進行する。QuePaxaはタイムアウトに依存せず、メッセージ遅延の激しい変動下でも動作する。問題は、メッセージ遅延が小さく変動も少ない通常時に、パフォーマンスが十分に競合できるかという点。歴史的にその答えは「No」であり、だからこそ非同期プロトコルはこれまで使われてこなかった。
素人考えだけど。
Meerkatたちを束ねるためのZookeeperが必要になるんじゃないかとふと思った。
線形化可能性に対してかなりストレートなアプローチだね。すべてを線形順序に置くという。
でも、これにはREAD操作まで含まれているのか!読み取りごとにグローバルなコンセンサスをとる必要があるってことだよね。ほとんどの分散システムは、読み取りを完全にローカルで済ませるために書き込みパスで追加の複雑さとレイテンシを許容している。読み取り操作が遅くてもいいなら素晴らしいトレードオフだけど、ニッチな用途に限定されるんじゃないかな。