分散システムの世界で長年使われてきたRaftやPaxosは、「リーダー」となるサーバーを1台選び、そこを中心に書き込みを進める設計だ。しかしリーダーが落ちたり、広域ネットワークで通信が遅延したりすると、全体の書き込みが止まってしまうことがある。Cloudflare Researchが公開した「Meerkat」は、この弱点に正面から向き合った合意サービスだ。
QuePaxaという新しいアルゴリズム
Meerkatが採用する「QuePaxa」は、全レプリカが常時書き込みを提案できる設計で、リーダーが存在してもそれは必須ではない。複数レプリカへの同時提案が互いに助け合うように組まれており、意図的に悪条件を再現したテストでは、Raft比で約10倍のスループットを維持できたという。50レプリカ規模の実験では、リーダーが常時故障し続ける状況でもエラー率が上がらなかったとされる。
何のためのサービスか
MeerkatはCloudflareの330以上のデータセンターにまたがるコントロールプレーン状態を、強い一貫性を保ちながら管理することを目的としている。世界中に拠点を持つ事業者ほど、リーダー選出の遅延や停止が実際の障害インシデントに直結しやすく、その痛みから生まれた設計だと推測できる。
現時点での位置づけ
まだ社内限定の実験段階だが、形式検証やピアレビュー論文化まで見据えているという。RaftやPaxosが長年「合意アルゴリズムの標準解」として扱われてきたことを考えると、QuePaxaのようなリーダー非依存の設計が実運用で証明されれば、広域分散システムの設計パターンに一石を投じることになりそうだ。詳しくはThe Cloudflare Blogの記事(https://blog.cloudflare.com/meerkat-introduction/)で読める。