asopi tech
asopi techIndie Developer

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のクイックスタートから試せます。

参考資料

関連ページ