Kafka Consumer メッセージの消費と再バランスのメカニズム

Kafka Consumer メッセージの消費と再バランスのメカニズム

Kafka コンシューマー

Kafka にはコンシューマ グループの概念があります。各コンシューマーは、割り当てられているパーティションからのメッセージのみを消費できます。各パーティションは、コンシューマー グループ内の 1 つのコンシューマーのみが使用できます。したがって、同じコンシューマー グループ内のコンシューマーの数がパーティションの数を超えると、一部のコンシューマーには消費するパーティションが割り当てられません。消費者グループと消費者の関係は次の図に示されています。

消費者団体

Kafka コンシューマー クライアントがメッセージを消費するには、通常、次の手順が含まれます。

  • クライアントを構成してコンシューマーを作成する
  • トピックを購読する
  • メッセージを引き出して消費する
  • 消費変位を提出する
  • コンシューマーインスタンスを閉じる

プロセス

Kafka の Consumer クライアントはスレッドセーフではないため、スレッドの安全性を確保し、消費パフォーマンスを向上させるために、Consumer 側で Reactor に似たスレッド モデルを使用してデータを消費できます。

消費モデル

Kafka コンシューマーパラメータ

  • bootstrap.servers: ホスト:ポートの形式でブローカー アドレスに接続します。
  • group.id: コンシューマーが属するコンシューマー グループ。
  • key.deserializer: プロデューサーの key.serializer (キーのデシリアライズ方法) に対応します。
  • value.deserializer: プロデューサーの value.serializer (値のデシリアライズ方法) に対応します。
  • session.timeout.ms: コーディネーターが障害を検出するまでにかかる時間。デフォルト値は 10 秒です。このパラメータは、ハートビートの有効期限と同様に、コンシューマー グループが (グループ メンバー comsummer) クラッシュをアクティブに検出する時間間隔です。
  • auto.offset.reset: このプロパティは、オフセットのないパーティションまたは無効なオフセット (コンシューマーが長期間非アクティブであり、現在のオフセットが古くて削除されている) を持つパーティションを読み取るときにコンシューマーが実行する操作を指定します。デフォルト値は latest で、これは最新のレコード (コンシューマーの起動後に生成されたレコード) からデータを読み取ることを意味します。もう 1 つの値は earliest です。これは、オフセットが無効な場合に、コンシューマーが開始位置からデータを読み取ることを意味します。
  • enable.auto.commit: 変位を自動的にコミットするかどうか。 false の場合は、プログラム内で手動で変位をコミットする必要があります。正確に1回だけのセマンティクスの場合、手動で変位をコミットするのが最善です。
  • fetch.max.bytes: 一度に取得するデータの最大バイト数
  • max.poll.records: 1 回のポーリング呼び出しで返されるメッセージの最大数。処理ロジックが非常に軽量な場合は、この値を適切に増やすことができます。ただし、max.poll.records 個のデータは session.timeout.ms 内に処理する必要があります。デフォルト値は500です
  • request.timeout.ms: リクエスト応答の最大待機時間。タイムアウト期間内に応答が受信されない場合、Kafka はメッセージを再送信するか、再試行回数を超えた場合は直接失敗と見なします。

Kafka の再バランス

リバランスは、本質的には、コンシューマー グループ内のすべてのコンシューマーがサブスクライブされたトピックの各パーティションを割り当てるために合意に達する方法を指定するプロトコルです。たとえば、グループの下に 20 人のコンシューマーがいて、100 個のパーティションを持つトピックをサブスクライブしているとします。通常の状況では、Kafka は各コンシューマーに平均 5 つのパーティションを割り当てます。この割り当てプロセスはリバランスと呼ばれます。

いつリバランスするのでしょうか?

これも、よく言われる質問です。リバランスのトリガー条件は 3 つあります。

  • グループ メンバーシップが変更されます (新しいコンシューマーがグループに参加、既存のコンシューマーがグループを離れる、または既存のコンシューマーがクラッシュします。この 2 つの違いについては後で説明します)
  • 購読トピックの数が変更されました
  • サブスクリプショントピックのパーティション数が変更されました

グループ内でパーティションを割り当てるにはどうすればいいですか?

Kafka はデフォルトで、範囲とラウンドロビンの 2 つの割り当て戦略を提供します。もちろん、Kafka はプラグ可能な割り当て戦略を使用しており、独自のアロケータを作成してさまざまな割り当て戦略を実装できます。

Kafka の面接でよく聞かれる質問

  • Kafka ではどのようなコマンドライン ツールが利用できますか?どれを使ったことがありますか? /bin ディレクトリ、Kafka クラスターの管理、トピックの管理、Kafka の生成と使用。
  • Kafka Producer の実行プロセスとは何ですか?インターセプター、シリアライザー、パーティショナー、アキュムレーター。
  • Kafka Producer の一般的な構成は何ですか?ブローカー構成、ack 構成、ネットワークおよび送信パラメータ、圧縮パラメータ、ack パラメータ。
  • Kafka メッセージを整然とさせるにはどうすればよいでしょうか? Kafka はトピック レベルでは順序付けされておらず、パーティション レベルでのみ順序付けされます。そのため、処理順序を保証するために、パーティショナーをカスタマイズし、順番に処理する必要があるデータを同じパーティションに送信することができます。
  • プロデューサーはデータが失われないようにどのように保証しますか? ack メカニズム、再試行メカニズム。
  • プロデューサーのパフォーマンスを向上させるにはどうすればいいですか?バッチ、非同期、圧縮。
  • 同じグループ内のコンシューマーの数がパーツの数より多い場合、Kafka はどのように処理しますか?冗長パーツは役に立たない状態となり、データを消費しません。
  • Kafka Consumer はスレッドセーフですか?安全でない、シングルスレッド消費、マルチスレッド処理。
  • Kafka Consumer を使用してメッセージを消費する場合のスレッド モデルについて教えてください。なぜこのように設計されているのでしょうか?引っ張りとハンドリングが分離されています。
  • Kafka Consumer の一般的な構成は何ですか?ブローカー、ネットワーク、プル パラメータ、ハートビート パラメータ。
  • コンシューマーはいつクラスターから追い出されますか?クラッシュ、ネットワーク異常、処理時間が長すぎるため、送信変位タイムアウトが発生します。
  • Consumer が参加または離脱すると、Kafka はどのように反応しますか?リバランスを実行します。
  • リバランスとは何ですか? また、いつ行われますか?話題が変われば、消費者も変わります。

<<:  OLTP と OLAP のハイパーコンバージェンス: 次世代クラウドネイティブ データベースの設計

>>:  Zolvit が Linode でクラウド コストを 50% 削減した方法

推薦する

クラウドなしで産業用IoTプロジェクトを構築する方法

皆さんが考えていることとは反対に、エンタープライズ IoT プロジェクトを実行するためにクラウド プ...

ハードウェアの観点から見たエッジコンピューティングとは何ですか?

IoT および IIoT デバイスによって生成される膨大な量のデータにより、エッジ コンピューティン...

インターネットビッグデータの時代が到来:起業家精神を探求する余地がある

編集者注: 60 秒間で、Flicker に 3,125 枚の写真がアップロードされ、Faceboo...

、Weiboは安定していますか?

Weiboは3月3日に第4四半期および通期の財務報告書を発表した。財務報告によると、微博の年間総収入...

ウェブマスターとして、ウェブサイトのタイトルを最適化する方法をご存知ですか?

最近、友人から、ウェブサイトのタイトルを最適化する方法や、検索エンジンに好まれるようにウェブサイトの...

Webmaster.com からの毎日のレポート: 違法ウェブサイトを報告して報酬を獲得。温州市がまたもや大規模なリベート案件を解決

違法ウェブサイトを報告して最大1万元の報奨金を獲得:動画サイトは厳しく調査される北京ニュース(記者:...

Azure で発見された 6 つの「悪夢」のクラウド セキュリティ脆弱性に対する Microsoft の対応

多くのセキュリティ研究者は、テナント間の脆弱性は顧客が認識しておく必要のある新しいタイプのリスクであ...

テンセントチャリティーは、99チャリティーデーの人気を年間を通じて拡大し、慈善の二重の「エンジン」の構築を目指しています。

「感染症との戦いは、デジタル技術と社会福祉の融合を加速させている」と、テンセント財団の葛炎事務局長は...

y3edge安価なC3データセンターVPS簡単な評価、安価なxに適しています

11月8日に、C3ロサンゼルスデータセンターのy3edgeから、768Mのメモリを搭載したVPSを取...

ソフトコンテンツマーケティングを使用して、オンライン販売に影響を与える内部リスクを排除する

ソフト記事マーケティングは我が国で最も古く、最も専門的なマーケティング手法ですが、オンラインニュース...

necs 768M KVM 4.3 ポンド/月

necs.co.uk (英国登録会社 VAT 番号 927207819、逃げる心配はありません) で...

ブロックチェーンの3つの主要な考え方:分散思考、コード化思考、コンセンサス思考

従来のインターネットは情報インターネットであり、ブロックチェーンは価値インターネットであるため、ブロ...

クラウド コンピューティングの種類、サービス、使用法について知っておくべきすべてのことを網羅した決定版ガイド

クラウド コンピューティング、その種類、サービス、用途、そして組織にどのようなメリットをもたらすかに...

スパムコンテンツはウェブサイトに悪影響を及ぼす可能性がある

SEO オペレーターの多くは、一般的に、Web サイトのコンテンツの更新と外部リンクの投稿という 2...

インフルエンサー マーケティングが SEO に役立つことをご存知ですか?

インフルエンサーマーケティングがブランドの海外展開に非常に役立つことは誰もが知っています。注文と売上...