0

SOA アプリケーションには次のシナリオがあります。ServiceA は、ServiceB のインスタンスによって非同期的に処理される必要があるいくつかのジョブを生成します。基本的に、これは、各ワーカーが ServiceB のインスタンスであるワーク キューの問題につながります。メッセージブローカーとして Kafka を使用しており、次の設定があります。

5 ブローカー B1、B2、B3、B4、および B5。10 個のパーティション (P1、P2、....P10) を持つトピック (A) があり、それぞれのレプリケーション ファクターは 3 です。パーティションの割り当てが次のようであると仮定します。レプリカとしての B(i+1) および B(i+2)。

ServiceB の 3 つのインスタンスが実行されています。このセットアップが与えられた場合、C1 が 3 つのパーティションから消費する消費モデルを実現するために、高レベル コンシューマー API をどのように使用すればよいでしょうか。3 つのパーティションからの C2。残りの 4 つのパーティションからの C3

4

1 に答える 1

1

高レベルのコンシューマーを使用して、このレベルまで物事を制御することはありません。

コンシューマー C1、C2、および C3 が同じコンシューマー グループの一部である (つまり、同じ group.id を持っている) 場合、高レベルのコンシューマーはそれらの間でパーティションのバランスを取ろうとします。最終的には、2 つのコンシューマーがそれぞれ 2 つのパーティションから消費し、4 つのパーティションから 1 つの読み取りを行うことになります。ただし、詳細を制御することはできません。

どのコンシューマーがどの数のパーティションを取得するかをさらに制御する必要がある場合は、単純なコンシューマー API を使用して自分で行う必要があります。

于 2014-11-28T18:33:48.230 に答える