古いバージョンZKに店舗オフセット(0.9をプリ)のみ、カフカの新しいバージョンながら、__consumer_offsets
と呼ばれる内部カフカのトピックのデフォルトのストア・オフセットによって(新しいバージョンはまだかかわらず、ZKするコミットかもしれません)。
ブローカへのオフセットをコミットする利点は、消費者がZKに依存しないことで、クライアントはブローカと話すだけで全体的なアーキテクチャを簡素化できることです。また、多くの消費者がいる大規模な展開では、Zafがボトルネックになることがありますが、Kafkaはこの負荷を簡単に処理できます(オフセットのコミットは、トピックへの書き込みとカフカのスケールと同じです - 実際デフォルトでは__consumer_offsets
です)。 50パーティションIIRCで作成)。
私はNodeJSまたはkafka-nodeに慣れていません。オフセットのコミット方法に依存します。
ブローカー0.10.1.0
を使用すると、トピック__consumer_offsets
へのオフセットをコミットできます。しかし、このプロトコルを実装している場合は、クライアントに依存します。
より詳細には、古いクライアントは新しいブローカーと話すことができるため、ブローカーとクライアントのバージョン(および使用しているコンシューマーAPI)によって異なります。まず、Kafkaトピックにオフセットを書き込むには、ブローカーとクライアントのバージョン0.9
以上が必要です。しかし、古いクライアントが0.9
ブローカに接続している場合でも、ZKへのオフセットをコミットします。 Javaの消費者のために
:
それは使用している消費者によって異なります。0.9の前にある二つの「古い消費者」すなわち「ハイレベルの消費者」と「低レベルの消費者」。両方とも、ZKに直接オフセットをコミットします。 0.9
以降、両方のコンシューマーが「新しいコンシューマー」と呼ばれる単一のコンシューマーに統合されました(これは古いコンシューマーの両方の低レベルおよび高レベルAPIを基本的に統一します)。
アップグレードを容易にするために、旧コンシューマ(0.9
のように)を使用して「二重コミット」オフセットを適用する可能性もあります。新しい消費者は、ブローカー(つまり、カフカの内部トピック) dual.commit.enabled
でこれを有効にすると、オフセットはZKと__consumer_offsets
のトピックにコミットされます。これにより、ZKから__consumer_offsets
トピックにオフセットを移動しながら、古いコンシューマAPIから新しいコンシューマAPIに切り替えることができます。
Thx、私は最新のAPIにアップグレードしてください。 –