Asopitech VS
Apache ZooKeeper vs Alopex Chirps
ZooKeeperのznode、Watch、エフェメラルノード、Zabによる原子的ブロードキャストを、Alopex Chirpsと比べて紹介します。
更新: 2026/10/13
Apache ZooKeeperとは
Apache ZooKeeperは、分散アプリのための協調サービスです。ファイルシステムに似た木構造の名前空間に、小さなデータを持つznodeを置きます。Javaで動き、JavaとCのクライアントがあります。
仕組み
- 合意の仕組み:ZooKeeperはRaftを使いません。Zab(ZooKeeper Atomic Broadcast)と呼ばれる独自の原子的ブロードキャストで、全サーバーを同期させます。書き込みはリーダーに集まり、過半数の確認でコミットされます。
- zxid:すべての更新に、エポックとカウンターから成るトランザクションIDが付き、全体の順序を表します。
- 読み取り:読み取りは、接続先のサーバーの複製から返ります。書き込みは線形化可能で、読み取りは古いデータを返すことがあります。
主な機能
- znode:データと子を持てるノード。版の番号とACLを持ちます。
- エフェメラルノード:作ったセッションが続く間だけ残るznodeです。グループのメンバーシップに使われます。
- Watch:znodeの変更を通知します。既定は一度で外れ、永続的で再帰的なWatchも選べます。
制限
サーバーの集まり(アンサンブル)は、互いを知っている必要があり、過半数が動いている間だけ使えます。データはメモリに置かれ、各znodeのデータは小さいものを想定しています。クライアントは1台のサーバーにTCPでつながります。
Alopex Chirpsとの違い
どちらも、リーダーと過半数による合意で、クラスタの決定を同じ順序に並べます。
ZooKeeperは、Zabで複製するznodeの木を、独立したサーバーとして提供します。Alopex Chirpsは、Raftを使い、アプリに組み込むRustのライブラリです。znodeやWatchの代わりに、gossipによるメンバーシップと、ノードの参加・離脱のイベントを持ちます。ノードどうしの通信はQUICと相互TLSで、メッセージ送信もそのまま使えます。
メンバーシップと合意を、別の協調サービスなしでアプリに持たせるAlopex Chirpsをおすすめします。GitHubのクイックスタートから試せます。