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% 削減した方法

推薦する

ページ構築とJSフロントエンドについて私たちが言いたいこと

Weibo のページ構築エンジニアとしての私の主な責任は、HTML と CSS を使用して高品質の静...

分類サイトは苦境に立たされている。アクセス数が急激に減少し、偽情報が蔓延している。

「58.com、魔法のウェブサイト!」ヤン・ミーをスポークスマンに迎えた58.comの広告は、バスや...

ウェブサイトのタイトルは「トピックに沿ったもの」でSEO最適化がスムーズに進む

小学校の先生がこう言ったのを今でも覚えています。「張強、君の作文の題名はまた的外れだよ。」今でもこの...

【クラウドネイティブ】Apache Livy on k8s 解説と実践操作

1. 概要Livy は、Spark クラスターと対話するための REST インターフェイスを提供する...

VPC をマスターするための 4 つのヒント

インターネット上のさまざまなソフトウェア、アプリケーション、モバイル アプリが、人々の生活に毎日溢れ...

国美の電子商取引事業統合が発表:国美オンラインが2つの主要プラットフォームを統合

12月3日、国美オンラインモールのオンラインショッピングインターフェースに「国美オンライン」ブランド...

SEO ブログ記事はすべて価値があるのでしょうか?

昨日、私は SEO ブログのオリジナル記事の問題について同僚と話していました。彼は、一部の SEO ...

ウェブサイトのキーワードランキングが不安定になる理由の分析

多くのウェブマスターは、キーワードの変化が速すぎて不安定になることを懸念しています。苦労して最適化し...

エッジコンピューティングとは具体的に何を意味するのでしょうか?

「エッジ」という言葉は、モノのインターネットの世界では新たな意味を与えられています。 5G時代の到来...

minivps 1G メモリ/openvz/6 USD/月 フランス/英国

以前、minivps Host Catを紹介しました。正式に登録された会社です。今回もプロモーション...

朱小湖:WeChatミニゲームの恩恵は今年もやって来ます!

このミニゲームは4か月間オンラインになっているが、今月初めの清明節までサードパーティへのリリースは正...

アマゾン ウェブ サービス、武田薬品工業、アクセンチュアが共同で TakedaSpark+ を開発し、武田中国のデジタル化をさらに推進

アマゾン ウェブ サービスは2022年11月9日、第5回中国国際輸入博覧会(CIIE)の期間中、アマ...

簡単な分析: ソフト記事のプロモーションのチャネルは何ですか?

ソフトテキスト プロモーションのチャネルは何ですか? SEO 担当者にとって、優れたプロモーション ...

Webmaster.comからの毎日のレポート:山東ウェブマスター会議が開催、Xiaomi Boxの8日間の夢は打ち砕かれる

1. 2012年山東インターネットウェブマスター会議が済南で成功裏に開催されました11月26日のAd...