私は2つの消費者グループG1とG2を持っています。グループごとに1人の消費者にメッセージが配信されますか?
- G1には2つのメンバM1、M2があります。
- G2は再び二つの部材M3、M4
G1ポーリングカフカトピックは、メッセージは両方ここで一つの部材M1又はM2のいずれにもない配信されますか?
同様に、G2がいつかポーリングしても、トピックについてのメッセージは引き続き検索されます。ここでもM3やM4が枯れていますか?
また、グループ内のすべてのメンバーが同じノード上にある必要があります。右 ?グループ内の特定のメンバーを選択するには、クライアントコードまたはKafkaの責任はありますか?
あなたが言ったように、トピックT1にパーティションが1つしかない場合は、M1とM3はそれから読み込み、M2とM4にはメッセージは表示されません。あなたのポストの最後の声明では、 M1ではなくM2を選択する? – emilly
最も単純な方法は、クライアントとブローカが通信してグループメンバーシップとパーティション割り当ての両方を判断することです。より複雑な答えは、グループメンバーシップが主にブローカで行われることです(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を参照)。 –
詳細については、Kafka 0.11.0.0を参照してください。新しいスティッキーパーティション割り当てアルゴリズムをパーティション割り当て戦略の既存のリストに追加する。ここに例を書いて詳細を書いています。https://cwiki.apache.org/confluence/display/KAFKA/KIP-54+-+Sticky+Partition+Assignment+Strategy –