2017-06-07 6 views
1

特定のトピックに対していくつのパーティションが存在するかに基づいて、Kafkaコンシューマーグループが負荷分散されていることを理解します。したがって、理想的な組み合わせは、トピックのパーティション数とそのトピックにサブスクライブするコンシューマ・グループのコンシューマ数の1:1です。Kafka消費者別の構成

私は消費者グループが実際に消費者グループ(つまり、1グループあたり1消費者)であるというシナリオを持っています。これは、主に異なるデータベース間の同期が原因で、同じデータが存在するためです。私がしようとしているのは、消費者がプロデューサー(ブロードキャスト)からメッセージを受け取るとすぐに、異なる環境で同じ仕事をすることだけです。

私にとっては、パーティション/ロードバランシングの考え方に違いはないと私は信じています。私は1つのパーティションとnレプリケーションファクタ(n =私のケースでは総消費者グループまたは消費者)を持つトピックを扱っています。誰も私の場合にはまだ1つ以上のパーティションを実装する必要があると思いますか?もしそうなら、理由を述べてください。

P.S.私はProducer/Consumer APIを使用しています。私のメッセージングフレームワークは、既存のアプリケーション設定に最小限の変更/影響を与える必要があります。

答えて

1

理想的な組み合わせは、1:トピックのパーティションの数と

は、より正確に消費者グループの消費者の数を1、パーティションの数は、消費者の数を制限しますコンシューマ・グループ(パーティションより多くのコンシューマがある場合は、アイドル状態になります)。パーティションよりも消費者の数が少ない可能性があります。私は1:1を必ずしも理想的とは言わないだろう、それは実際の限界だ。

私は1つのパーティションとn個のレプリケーションファクタ(n =総消費者グループ、または私のケースの消費者)を持つトピックを扱います。

私は、消費者グループの数に等しいレプリケーションファクタを持つ値は表示されません。レプリケーションは、回復力、すなわちブローカがダウンした場合のデータ損失を防ぐためである。各消費者は特定のパーティションのリーダーブローカーから消費することがあるため、消費者の数とは何の関係もありません。

誰も私のケースではまだ1つ以上のパーティションを実装する必要があると思いますか?もしそうなら、理由を述べてください。

パーティション化データは、ブローカ側とコンシューマ側の両方で負荷分散用です。たとえ必要がないと思っても、最初からパーティション数を増やすほうが、後でデータを再パーティション化するほうが簡単です。一方、独自のオーバーヘッド(ブローカのCPU負荷など)が発生すると、それを高く設定する必要はありません。

P.それはKTable、KStreamを提供していますカフカストリームのだから、私は、あなたがカフカのストリームAPIを使用していないと言うことを意図し

が私に聞こえ、私は表/ストリーム関連の集約致しておりませんので、プロデューサ/コンシューマAPIを使用していませんおよびその上の凝集を含む。

+0

。混乱しているP.S.については申し訳ありません。パート - 私は今質問を更新しました/ – ha9u63ar

1

複数のパーティションは、ブローカの数がレプリケーションファクタより大きいクラスタでKafkaを実行する場合に便利です。したがって、5人のブローカーと3人の複製がある場合、2つの追加のブローカーは必要ありません。 3の複製を持つ2つのパーティションがある場合、5つのブローカーに2 * 3 = 6のパーティションを分割できます。

2つのパーティションと1つのブローカーが存在し、残りのパーティションは1つのみです。だから、それは均等に広がっていません。より良い拡散を得るためには、より多くのパーティションを持つ方がよいでしょう。

いくつかのパーティションを選択する理由はありますが、これに関する多くの記事があります。私が説明したことは、まずは経験則です。

+0

注文が重要でない限り、私は常にパーティションを活用する必要がありますか? – ha9u63ar

+0

はい、私はパーティションの数を増やすとかなり保守的だと思います:-) – jvwilge

関連する問題