ZooKeeper vs etcd: どちらのコーディネーションストアを選ぶか
ZooKeeper は watch とエフェメラルノードを備えた長年確立されたコーディネーションサービスであり、etcd はシンプルな HTTP/gRPC API を備えたモダンな Raft ベースのキーバリューストアです。
ZooKeeper は ZAB 合意の上に構築され、階層的な znode、watch、エフェメラルノードを提供し、多くの古い分散システムを支えています。etcd は Raft を使い、クリーンな gRPC/HTTP API を公開し、lease と watch ストリームをサポートし、標準的な Kubernetes ストアです。ZooKeeper はレガシーエコシステムへの依存で勝り、etcd はモダンな API、よりシンプルなモデル、cloud-native の勢いで勝ります。
| ZooKeeper | etcd | |
|---|---|---|
| 合意 | ZAB | Raft |
| API | クライアントライブラリ | gRPC / HTTP |
| モデル | Znode、watch | KV、lease、watch |
| エコシステム | レガシーなビッグデータ | Cloud-native / K8s |
| 最適な用途 | 既存の ZK システム | モダンな KV/コーディネーション |
ユースケースと API
ZooKeeper はすでにその上に構築されたシステム、またはその特定のプリミティブが必要なシステムに適しています。etcd はクリーンな API を備えた新規の cloud-native なコーディネーションと設定のニーズに適しており、Kubernetes 環境ではデフォルトです。
ops と CI への適合
etcd は新規のデプロイにおいて ZooKeeper より運用と理解がシンプルになる傾向があります。両者とも一時的なクォーラムに対して CI で結合テストされ、より高速なマネージド runner がクラスタの起動と watch/lease のテストを短縮します。
結論
既存の ZooKeeper 依存システムをサポートする、またはそのプリミティブが必要なら ZooKeeper。モダンな cloud-native のコーディネーションを構築する、または Kubernetes を運用するなら etcd。新規の作業は概して etcd を好み、ZooKeeper はレガシープラットフォームの下で存続します。