2017-08-06 3 views
0

Apache Kafkaでは、TypeAのメッセージがPartitionAに送られ、TypeBのメッセージがPartitionBに送られるように、ProducerとPartitionerを書くことができます。 Consumer/ConsumerGroupAはPartitionAのみから消費され、Consumer/ConsumerGroupBはAssign()を使用してPartitionBからのみ消費されるようにConsumer/ConsumerGroupを書くこともできます。Apache Kafka - 特定のパーティションのみから消費する消費者間の負荷分散

しかし、私が本当に理解したいことは、まったく良い習慣であるということです。私が理解していることから、これはロードバランシング機能を厳しく制限し、同時に複雑さを増すためです。その理由は、TypeAのメッセージが増え、負荷を処理するためにPartitionA2と言う別のパーティションを作成し、さらにコンシューマーを作成し、コンシューマーグループに新しいコンシューマーと古いコンシューマーを追加し、新しいパーティションと古いパーティションの両方で、私はそれを行うことができますか?

答えて

0

割り当てを使用しても負荷分散機能は制限されませんが、新しいコンシューマが起動または停止したときにパーティションを再割り当てするためのすべての問題を手に入れます。あなたが購読方法で無料で持っているものです。 具体的な質問については、PartitionA2を追加する際には、そのパーティションに割り当てられているassignを使用する別のコンシューマを追加することができます。

0

subscribe APIを使用して、より多くのコンシューマインスタンスをコンシューマグループに追加できます。 assign APIを使用すると、自分でリバランスを処理する必要があります。 また、アプリケーションがパーティショニング戦略(イベントの順序付け)に依存する場合、パーティショニングを変更したくない場合もあります。たとえば、ユーザーログイン/ログアウト操作用に1つのパーティションがあるとします。パーティション分割を2つのパーティション(ログインとログアウト用に1つ)に変更した場合、アプリケーションはその特定のユーザーのログインイベントの前にログアウトイベントを見ることができます。もちろん、typeAが何であるかを確認する必要があり、typeAイベントを2つの異なるパーティションに送信することができれば、それは必要です。

0

ありがとうppatierno & mrnakumarあなたの助けには、私のタイプAのイベントはすべて独立しており、時間の順序は必要ありませんが、自分自身のバランスを取る必要があります。

関連する問題