2017-11-14 3 views
0

現在、トピックのパーティションは1つしかなく、消費者は1つしかありません。 しかし、私の消費者は低迷しているので、新しい消費者を同じトピックに追加したいと考えています。カフカコンシューマ用にいくつのパーティションを作成する必要がありますか?

しかし、私は同時に、すべての消費者が排他的なメッセージセットを処理したいと思っています。

スループットを増やして排他メッセージを処理するたびにコンシューマを追加できるように、作成するパーティション数を決定できません。

答えて

1

トピックのN個のパーティションがある場合は、N個のコンシューマーを含むコンシューマーグループを開始することができ、それぞれがパーティションの1つで動作するようになります。

各コンシューマは、フェールオーバーが発生しない限り、メッセージが複数回配信されない限り、異種のメッセージを受信します。ワークロードがすべてのパーティションに均等に分散されている場合は、適切にバランスを取る。

N個のコンシューマより少ない数のコンシューマがある場合は、複数のパーティションを取得しますが、パーティションは共有されず、それぞれのコンシューマはほぼ同じ数のパーティションになります。

消費者がN人以上いる場合、一部の人はアイドル状態のままです(ただし、他の人が脱落した場合はホットスタンバイとして機能します)。

これらのコンシューマーを同じコンシューマー・グループに入れることが重要です。それはカフカに彼らがそれらの間のパーティションを分割すべきであることを示す方法です。代わりにN個の消費者グループを開始した場合、各グループはすべてのメッセージを並列に取得します(各メッセージはN回処理されます)。

パーティショニングの主な欠点は、メッセージの合計順序が失われることです。メッセージは、同じパーティション内の他のメッセージに関してのみ順序どおりに配信されます。これはあなたのアプリケーションの問題かもしれません(そうであれば、タイムスタンプを見てあなたのアプリケーション内のものを並べ替えることができます)。

+0

消費者を増やしたいときはいつでもパーティションを増やす仕組みがありますか? –

+0

実際にはありません。十分なパーティションを前面に配置する必要があります。消費者よりも多くのパーティションを持つことは問題ではありません。それぞれは複数のパーティションを取得します。また、カフカは消費者の参加や動的な退出を処理できるため、存在するパーティション間でパーティションを再調整します。 – Thilo

+0

本当にする必要がある場合は、あとでパーティションを追加することはできますが、既存のメッセージは再パーティション化されません。私はあなたがパーティションの数を減らすことができるとは思わない(データ損失なし)。 – Thilo

関連する問題