Kafka 入門、コンシューマ ワークフロー (18)

カフカの消費方法

ここに画像の説明を挿入
プル (プル) モード:
コンシューマーがブローカーからデータを積極的にプルします。
カフカはこのアプローチを採用しています。
プッシュ (プッシュ) モード:
メッセージ送信速度はブローカーによって決定され、すべてのコンシューマーの速度に適応するのは難しいため、Kafka はこの方法を使用しません。たとえば、プッシュ速度が 50m/s の場合、consumer1 と Consumer2 にはメッセージを処理する時間がありません
。プル モードの欠点は、Kafka にデータがない場合、コンシューマーがループに陥り、一貫して空のデータを返す可能性があることです。

全体的な消費者のワークフロー

ここに画像の説明を挿入
1) 各コンシューマのオフセットは、コンシューマによってストレージのシステム トピックに送信されます。
2) 各パーティションのデータは、コンシューマ グループ内の 1 つのコンシューマによってのみ使用できます。
3) コンシューマは複数のパーティションからデータを使用できます。

消費者原理

ここに画像の説明を挿入
コンシューマ グループ (CG): コンシューマ グループは複数のコンシューマで構成されます。コンシューマ グループを形成するための条件は、すべてのコンシューマ グループが同じグループ ID を持つことです。
コンシューマ グループ内の各コンシューマは、異なるパーティション データを使用する責任を負い、パーティションを使用できるのはグループ内の 1 人のコンシューマのみです。
コンシューマ グループは互いに影響を与えず、すべてのコンシューマは特定のコンシューマ グループに属します。つまり、コンシューマ グループは論理サブスクライバです。
ここに画像の説明を挿入
1) コンシューマ グループにコンシューマが追加され、トピック パーティションの数を超えた場合、一部のコンシューマはアイドル状態になり、メッセージを受信しなくなります 2) コンシューマ グループは相互に影響せず、すべてのコンシューマは特定のコンシューマ A に属し
ますグループ、つまりコンシューマ グループは論理サブスクライバです

コンシューマの初期化プロセス

ここに画像の説明を挿入
コーディネーター: 補助グループは、コンシューマー グループの初期化とパーティションの割り当てを実装します。
コーディネーター ノードの選択 = groupid%50 のハッシュコード値 (_consumer_offsets のパーティション配列)
例: groupid=1、1%50=1 のハッシュコード値、その後_consumer_offsets パーティション 1 のトピック。ブローカーはこのノードのコーディネーターをコンシューマ グループのボスとして選択します。コンシューマ グループの下のすべてのコンシューマがオフセットを送信すると、このパーティションにオフセットを送信します。1) 各コンシューマは joinGroup リクエストを送信します

2) 消費者をリーダーとして選択します。
3) 消費のトピックをリーダー消費者に送信します。
4) リーダーは、消費計画を指定する責任があります。
5) 消費計画をコーディネーターに割り当てます。
6) コーディネーターは、消費計画を消費者に送信します。各コンシューマー
7) 各コンシューマーはコーディネーターでハートビートを保存し (デフォルトは 3 秒)、タイムアウトすると (session.timeout.ms=45 秒)、コンシューマーはブロックされ、リバランスがトリガーされるか、コンシューマーの時間が経過します。メッセージを処理するには長すぎます 長い (max.poll.interval.ms5 分)、リバランスもトリガーされます
ここに画像の説明を挿入
Fetch.min.bytes 各バッチの最小フェッチ サイズ、デフォルトは 1 バイトです
fetch.max.wait.ms 最小値データのバッチの値を超えていない 時間、デフォルトは 500ms
fetch.max.bytes バッチごとの最大フェッチ サイズ、デフォルトは 50m
max.poll.records データを 1 回プルすることで返されるメッセージの最大数、デフォルト500です
ここに画像の説明を挿入
ここに画像の説明を挿入

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_43205308/article/details/131522465