2017-06-19 15 views
1

私は2つの消費者グループG1とG2を持っています。グループごとに1人の消費者にメッセージが配信されますか?

  1. G1には2つのメンバM1、M2があります。
  2. G2は再び二つの部材M3、M4

G1ポーリングカフカトピックは、メッセージは両方ここで一つの部材M1又はM2のいずれにもない配信されますか?

同様に、G2がいつかポーリングしても、トピックについてのメッセージは引き続き検索されます。ここでもM3やM4が枯れていますか?

また、グループ内のすべてのメンバーが同じノード上にある必要があります。右 ?グループ内の特定のメンバーを選択するには、クライアントコードまたはKafkaの責任はありますか?

答えて

0

質問に対する回答は、これらのコンシューマグループが消費しているトピックにいくつのパーティションがあるかによって異なります。コンシューマ・グループの1つのメンバーだけが、トピックの各パーティションから読み取ることができます。

トピックT1にパーティションが1つしかない場合は、M1とM3はそこから読み取り、M2とM4はメッセージを受け取りません。

2つのパーティションはT1(P1およびP2と言う)である場合は、M1とM3はT1P1とM2とM4からメッセージを得るでしょうT1P2

からのメッセージになるだろうコンシューマ・グループのすべてのメンバーにはありません同じノード上にある必要があります

ブローカーの1人がグループのコーディネーターとして指定され、グループのメンバーとそのパーティションの割り当てを管理します。

+0

あなたが言ったように、トピックT1にパーティションが1つしかない場合は、M1とM3はそれから読み込み、M2とM4にはメッセージは表示されません。あなたのポストの最後の声明では、 M1ではな​​くM2を選択する? – emilly

+0

最も単純な方法は、クライアントとブローカが通信してグループメンバーシップとパーティション割り当ての両方を判断することです。より複雑な答えは、グループメンバーシップが主にブローカで行われることです(https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol#AGuideToTheKafkaProtocolGroupMembershipAPIを参照)。代入は主にKafkaクライアントライブラリで行われます(https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Client-side+Assignment+Proposalを参照)。 –

+0

詳細については、Kafka 0.11.0.0を参照してください。新しいスティッキーパーティション割り当てアルゴリズムをパーティション割り当て戦略の既存のリストに追加する。ここに例を書いて詳細を書いています。https://cwiki.apache.org/confluence/display/KAFKA/KIP-54+-+Sticky+Partition+Assignment+Strategy –

関連する問題