Zookeeper は Kafka に必須ですか? [closed] 質問する

Zookeeper は Kafka に必須ですか? [closed] 質問する

Kafka では、1 つのブローカー、1 つのトピック、および 1 つのプロデューサーと複数のコンシューマー (各コンシューマーはブローカーから独自のデータ コピーを取得します) を持つ 1 つのパーティションのみを使用したいと考えています。これを考慮すると、Zookeeper を使用するオーバーヘッドは不要です。ブローカーのみを使用することはできませんか? Zookeeper が必須なのはなぜですか?

ベストアンサー1

はい、Kafka を実行するには Zookeeper が必要です。Kafka 入門ドキュメントより:

ステップ2: サーバーを起動する

Kafka は Zookeeper を使用するため、まだ Zookeeper サーバーがない場合は、まず Zookeeper サーバーを起動する必要があります。Kafka にパッケージされている便利なスクリプトを使用して、手早く単一ノードの Zookeeper インスタンスを取得できます。

その理由は、分散システム全体でタスク、状態管理、構成などを調整する方法が必要であることがずっと以前からわかっていたからです。プロジェクトによっては独自のメカニズムを構築しています (MongoDB シャード クラスターの構成サーバーや Elasticsearch クラスターのマスター ノードなど)。また、汎用分散プロセス調整システムとして Zookeeper を活用することを選択したプロジェクトもあります。Kafka、Storm、HBase、SolrCloud など、いくつかのプロジェクトではすべて、管理と調整に Zookeeper が使用されています。

Kafka は分散システムであり、Zookeeper を使用するように構築されています。Kafka の分散機能をまったく使用していないという事実によって、Kafka の構築方法が変わることはありません。いずれにしても、Zookeeper を使用することで大きなオーバーヘッドは発生しないはずです。より大きな問題は、なぜこの特定の設計パターンを使用するのかということです。Kafka の単一ブローカー実装では、マルチブローカー クラスターの信頼性機能のすべてと、その拡張性が失われます。

おすすめ記事