1、オフセットトピック
消費者は、消費者がクラッシュしたり、新たな消費者がパーティションリバランス操作によってトリガコンシューマ・グループに参加するので、最終的な消費者の現在の位置を記録するために提出することによって、オフセット、各消費者は、異なるパーティションに割り当てることができます。示すように、メッセージを送信するために特別なテーマ「_consumer_offset」に0.11.0.2、消費者:私はカフカのバージョンをテストしました:
メッセージの内容は次のとおりです。
フィールド | コンテンツ |
---|---|
キー | コンシューマ・グループ、トピック、パーティション |
ペイロード | オフセット、メタデータ、タイムスタンプ |
「_consumer_offset」に提出したメッセージのテーマは、キーコンシューマ・グループに基づいて分割され、消費者のグループ内のすべてのメッセージは、唯一のパーティションに送信されます。
2、コミットオフセット
送信データカフカ生産者へのオフセット提出ロジックと事実一般的なのは同じです。
2.1、消費者
消費者がオフセットデータを送信するための「_consumer_offset」のテーマを起動すると、内蔵の生産を作成します。
2.2、ブローカー
オフセットは、通常の生産要求、同じロジックとして提出することです。
クラスタ内の要求最初のオフセットを提出したときに「_Consumer_offset」テーマが自動的に作成されます。
3、提出のオフセット
繰り返し消費と漏れの消費量:提出オフセット時に二つの問題が発生します。
- オフセットの最後のメッセージクライアント処理よりも少ない提出オフセットが、繰り返し消費を引き起こす可能性があります。シナリオ:消費者が成功した場合、最初の消費者は、オフセットを提出した後、失敗したコミット、消費者はオフセット次または前を取得し、そのための支出の重複になります。
- 提出時に、オフセットオフセットは、最後のメッセージのクライアント側の処理よりも大きい場合、漏れ消費の原因となります。シナリオ:最初に提出が成功した場合、消費者は、オフセットの次の買収は新しいものであり、消費者が失敗し、それが漏れ消費の原因となります、消費後、オフセット提出してください。
ビジネスケースに応じて、適切な配送方法が効果的支出と消費漏れ問題の重複を取り除くことができますを選択します。
3.1、自動コミット
自動提出を提出する最も簡単な方法で、パラメータを設定することで、あなたは時間通りに提出することができ、自動的に間隔を提出するように設定することができます。欠点は、つまりデータの一部を消費し、自動送信は、まだ時間に達していない場合、この時間は、参加する新しい消費者がある、または現在の消費者がハングアップし、後に再び消費者に約束したパーティションのリバランス操作があるでしょう支出の重複が生じ、消費の開始オフセット。間隔提出し、まだこの問題を解決することはできません自動的に短縮することが可能ではあるが。
3.2同期は現在のオフセットをコミット
同期提出がブロックされなければならない、と機構が再試行されますので、閉じるマニュアルの提出、提出は、あなたが主導権を取得することができますが、オフセット電流に同期インタフェースを介して提出しますが、スループットを犠牲にすることができます。
3.3、非同期オフセット電流をコミット
非同期提出、両方のイニシアチブを使用し、それはまた、スループットカフカ消費を増加させることができ、何の再試行メカニズムはありませんが、また、問題が繰り返し消費に余裕がありません解決します。
3.4、同期および非同期の提出の組み合わせ
通常の使用非同期提出速度を使用している場合。あなたがコミットの同期を使用するときに、彼らが失敗した場合、消費者をオフにしたい場合は成功提出または回復不能なエラーが発生するまで、彼らは再試行されていたであろう。同期または非同期の提出が消費や漏れ消費の問題を回避するために、重複して提出することができないかどうか。
3.5、指定されたオフセットを提出
自動提出は、同期および非同期の提出提出があるので、オフセット、最後はアップ提出します。オフセット指定提出することにより、繰り返し消費は、消費やリークの問題を軽減することができますが、対応する最終消費者は、複雑なビジネスプロセス、および自分自身のオフセットを維持する必要性を必要とします。