まず、高水準の消費者のためだけに飼い猫が必要です。 SimpleConsumer
は、飼い猫の作業が必要ありません。
高水準の消費者にとって飼い主の主な理由は、消費されたオフセットを追跡し、ロードバランシングを処理することです。
詳細はこちら。
オフセットトラッキングについては、コンシューマを開始し、100個のメッセージを消費し、コンシューマをシャットダウンします。次に消費者を始めるときには、最後に消費されたオフセット(100)から再開したいと思うでしょう。つまり、消費された最大オフセットをどこかに保存する必要があります。 zookeeperが立ち往生する場所は次のとおりです。グループ/トピック/パーティションごとにオフセットを保存します。このようにして次回に消費者を始めると、「ねえ飼い主よ、私は消費し始めなければならないオフセットは何ですか?」と聞くかもしれません。カフカは、実際には(今だけzookeeper
とkafka
ストレージが利用可能であり、私はkafka
ストレージが完全に実装されているか分からないオフセットのため)だけでなく飼育係ではなく、他のストレージだけでなく、オフセットを格納することができることに向かって動いています。
ロードバランシングに関しては、生成されるメッセージの量が1台のマシンで処理するにはかなり大きくなり、ある時点でコンピューティングパワーを追加することをお勧めします。 100個のパーティションを持つトピックがあり、10台のマシンを持つこの量のメッセージを処理することができます。実際にここで発生するいくつかの質問があります:
- これらの10台のマシンはどのようにしてパーティションを分割しますか?
- マシンの1つが死んだ場合はどうなりますか?
- あなたが別のマシンを追加したい場合はどうなりますか?
また、ここでは、グループ内のすべてのコンシューマを追跡し、各上位コンシューマがこのグループの変更を購読しています。要点は、コンシューマが表示されたり消えたりすると、Zookeeperはすべてのコンシューマに通知し、リバランスをトリガーするため、パーティションをほぼ均等に分割する(負荷を分散するなど)。このようにして、消費者のうちの1人が他人を死ぬと、この消費者が所有するパーティションを処理し続けるかどうかが保証されます。
答えてくれてありがとう、これはそれをクリアし、それは私が推測するものだが、私はどこにでもそれを見つけることができませんでした。また、私はちょうど0.9消費者はもはや飼育係を使用しませんそのバージョンを読んで、それが唯一のリーダー選挙などのためのブローカーで使用されています – Luckl507