この記事では、Kafka Consumer について簡単に紹介します。これは、Kafka Conumer を詳細に学習するための窓口となります。それは主に次の3つの側面から始まります。
1. Kafka コンシューマーコアパラメータの概要個人的には、Kafka Consumer のコア動作メカニズムを深く理解したい場合は、コアパラメータから始めて、キューロードメカニズム、メッセージプルモデル、消費モデル、サイト送信などのメカニズムをより深く理解するための基礎を築くことができると思います。 Kafka Consumer のコア プロパティは ConsumerConfig で定義されます。 1.1 基本関数パラメータ
コンシューマー グループ名。
クライアント識別 ID。デフォルトはコンシューマー シーケンス番号です。実際には、コンシューマー グループ内で繰り返すことができないクライアント IP アドレスを含めることをお勧めします。
ブローカー サーバーのアドレス リスト。
クライアントは、ブートストラップ アドレスを見つけるために次の 2 つの方法をサポートしています。
このメソッドは、ホスト上のネーム サービスに従って bootstrap.servers によって提供されるホスト名 (hostname) に基づいて IP アドレスの配列 (InetAddress.getAllByName) を返し、次に inetAddress.getCanonicalHostName() を取得して、TCP 接続を確立します。 ホストは複数のネットワーク カードで構成できます。この機能を有効にすると、複数のネットワーク カードの利点を有効に活用し、ブローカーのネットワーク負荷を軽減できるようになります。
このメソッドは、bootstrap.servers で提供されるホスト名とポートを直接使用して TCP 接続を作成します。これはデフォルトのオプションです。
自動サイト送信を有効にするかどうか。デフォルトは true です。
自動サイト送信が有効になっている場合、サイト送信頻度はデフォルトで 5 秒に設定されます。
コンシューマ キューの負荷アルゴリズム。デフォルトは間隔による平均分散 (RangeAssignor)、オプションの値: ポーリング (RoundRobinAssignor)
サイト戦略をリセットします。 Kafka がサイトを送信すると、対応するメッセージが削除されます。デフォルトは最新です。オプションは earliest と none (例外がスローされます) です。
使用されるキーシリアル化クラス
メッセージ本文のシリアル化クラス
コンシューマー側インターセプターは複数存在する場合があります。
CRC を消費者側でチェックする必要があるかどうか。デフォルトは true です。 1.2 ネットワーク関連パラメータ
ネットワーク チャネル (TCP) の送信バッファ サイズはデフォルトで 128K です。
ネットワーク チャネル (TCP) の受信バッファ サイズはデフォルトで 32K です。
リンクを再確立するためのデフォルトの待機時間は 50 ミリ秒です。これは低レベルのネットワーク パラメータであり、注意する必要はありません。
接続を再確立するための最大待機時間は、デフォルトでは 1 秒です。同じ接続に 2 回連続して再接続すると、reconnect.backoff.ms の初期値に基づいて待機時間が指数関数的に増加します。ただし、最大値を超えると、指数関数的に増加しなくなります。
再試行間隔。デフォルト値は 100 ミリ秒です。
接続の最大アイドル時間。デフォルトは 9 秒です。
リクエストタイムアウト、ブローカーとのネットワーク通信のリクエストタイムアウト。 1.3 コア動作パラメータ
ポーリング メソッド呼び出しごとに取得できるメッセージの最大数は、デフォルトでは 500 です。
2 つのポーリング メソッド呼び出し間の最大間隔 (ミリ秒単位)。デフォルトは 5 分です。コンシューマーが間隔内にポーリング操作を開始しない場合、コンシューマーは削除され、再バランスがトリガーされ、コンシューマーに割り当てられたキューは他のコンシューマーに割り当てられます。
コンシューマーとブローカー間のハートビート タイムアウトは、デフォルトでは 10 秒です。ブローカーが指定された時間内にハートビート要求を受信しない場合、ブローカーはコンシューマーを削除し、リバランスをトリガーします。
ハートビート間隔。コンシューマーはこの頻度でブローカーにハートビートを送信します。デフォルトは 3 秒です。これは主にセッションが期限切れにならないようにするためです。
メッセージをプルするときに返される最小バイト数。デフォルト値は 1 バイトです。
一度にメッセージをプルするときに返される最大バイト数。デフォルト値は 1M です。パーティション内の最初のメッセージ バッチのサイズがこの値より大きい場合は、それらも返されます。
各パーティションから一度に取得できる最大バイト数は、デフォルトでは 1M です。
データが fetch.min.bytes を満たすまでフェッチが待機する最大待機時間。
クライアント上のメタデータの有効期限。有効期限が切れると、クライアントはブローカーから最新のメタデータを再度取得します。デフォルトは 5 分です。
消費者が契約終了後すぐにサブスクリプション グループを離れるかどうか。デフォルト値は true です。これは、クライアントが切断されるとすぐに再バランス調整がトリガーされることを意味します。 false に設定すると、再バランスはすぐにはトリガーされず、セッションの有効期限が切れた後にトリガーされます。 2. KafkaConsumer コアコンポーネントと APIKafkaConsumer のコア パラメータを通じて、基本的に Kafka のコア ポイントを垣間見ることができます。次に、Kafka コンシューマー消費モデルに関するさらなる詳細な調査の基礎を築くために、KafkaConsumer のコア コンポーネントを紹介します。 2.1 コアコンポーネント KafkaConsumer は次のコア コンポーネントで構成されています。
コンシューマー側のネットワーク クライアントは、基盤となるネットワーク通信を提供し、クライアントとサーバー間の RPC 通信を担当します。
消費者側コーディネーター。 Kafka の設計では、クラスター内の各コンシューマー グループは、コンシューマー グループのコーディネーターとなるブローカー ノードを選出します。ブローカー ノードは、コンシューマー グループの状態管理、特にコンシューマー グループの再調整 (コンシューマーの参加と退出) を担当します。このタイプのやり取りは、消費者とブローカー コーディネーターの間で行われます。
メッセージプル。 ヒント: この記事では、各コンポーネントを詳しく説明するつもりはありません。この記事の前半で各パラメータの意味を理解した上で、これらのパラメータが最終的にどのコンポーネントに履歴書が渡されるかを比較し、詳細に検討することをお勧めします。 2.2 コアAPIの概要 最後に、コンシューマーのコア API を見てみましょう。
このコンシューマーのキュー割り当てのリストを取得します。
このコンシューマーのサブスクリプション情報を取得します。
トピックを購読します。
トピックをサブスクライブし、キューの再バランス調整のリスナーを指定します。
サブスクリプションの代わりに、消費するキューを手動で指定します。
サブスクリプションを解除します。
ポーリング(期間タイムアウト) メッセージのプルは KafkaConsumer のコアメソッドであり、以下で詳しく説明します。
この消費送信バッチの消費進行状況を同期的に送信します。これについては、以降の記事で詳しく説明します。
消費の進行状況を同期的に送信し、タイムアウトを設定します。
オフセット) 消費の同期送信の進行状況を表示します。 offsets は、送信する必要がある消費進捗の情報を示します。
オフセット、最終期間タイムアウト) タイムアウト期間を含む、同期送信の消費の進行状況を表示します。
consumer#poll メソッドによる次のメッセージ プルのオフセットをリセットします。
seek メソッドはメソッドをオーバーロードします。
ポーリング メソッドの次のプル オフセットをキューの初期オフセットに設定します。
ポーリング メソッドの次のプル オフセットをキューの最大オフセットに設定します。
プルされるオフセットを取得します。
同上。
指定されたパーティションのコミットされたオフセットを取得します。
同上。
統計指標。
トピックのルーティング情報を取得します。
同上。
すべてのトピックのルーティング情報を取得します。
同上。
中断されたパーティション情報を取得します。
パーティションを一時停止すると、次のポーリング メソッドではこれらのパーティションのメッセージが返されなくなります。
一時停止されたパーティションを再開します。
オフセットForTimes(マップタイムスタンプを検索) タイムスタンプに基づいて最新のメッセージのオフセットを見つけます。
offsetsForTimes(MaptimestampsToSearch、期間タイムアウト) 同上。
beginningOffsets(Collection<TopicPartition> パーティション) 指定されたパーティションの現在の最小オフセットを照会します。
beginningOffsets(Collection<TopicPartition> パーティション、期間タイムアウト) 同上。
endOffsets(Collection<TopicPartition> パーティション) 指定されたパーティションの現在の最大オフセットを照会します。
endOffsets(Collection<TopicPartition> パーティション、期間タイムアウト) 同上。
コンシューマーを閉じます。
コンシューマーを閉じます。
消費者を目覚めさせましょう。 Kafka が提供するコンシューマーは、メッセージを自動的にプルするプッシュ モードを提供する RocketMQ とは異なります。アプリケーションは、これらの API を自動的に整理してメッセージをプルする必要があります。 Kafka コンシューマーもサイトの自動送信メカニズムをサポートしていることは注目に値します。 Kafka のコンシューマー (KafkaConsumer) オブジェクトはスレッドセーフではありません。 KafkaConsumer の一時停止 (特定のパーティションの消費を一時停止) と再開 (特定のパーティションの消費を再開) に基づいて、コンシューマー側の電流制限メカニズムを簡単に実装できます。 この記事は主に消費者についての一般的な理解を深めることを目的としています。次回以降も、消費者のコアな動作メカニズムを一つずつ紐解いていきます。どうぞお楽しみに。 この記事はWeChatの公開アカウント「Middleware Interest Circle」から転載したものです。以下のQRコードからフォローできます。この記事を転載する場合は、Middleware Interest Circle の公開アカウントにお問い合わせください。 |
<<: 中間レビュー: 2021 年に注目を集める SaaS スタートアップ 10 社
この記事はWeChatの公開アカウント「Invincible Coder」から転載したもので、著者は...
SEOは現在、検索エンジン最適化の主流の方法です。しかし、SEO の現状はあまり楽観的ではなく、「亀...
私は毎日新しく公開された記事をすべて読んでいますが、それらの記事ではオリジナルのコンテンツについて語...
1月10日、中国情報通信研究院(以下、「CAICT」)が主催し、クラウドコンピューティング標準およ...
2年前、Baidu ExperienceはBaiduの強力なプロモーションとメディアの宣伝により誕生...
序文クラウドコンピューティングは、情報技術機能のオンデマンド供給を促進し、情報化構築の利用レベルを向...
この記事では、スクラム アジャイル開発プロセスを体系的に分析します。この記事がアジャイル開発に対する...
Admin5は、過去2年間、江西省トップ10の投資人物、誠実な中国の革新的先駆者、調和のとれた中国の...
今朝のフォーラムの SEO セクションで、なぜウェブサイトのページ自体がドメイン: ドメイン名の後に...
Tencent Meetingがテクノロジー賞を受賞しました。 5月26日、2021年中国国際ビッグ...
Baidu アルゴリズムの継続的な調整により、多くの個人ウェブマスターは、正しいウェブサイト最適化方...
ウェブマスターは、ウェブサイトが収益を上げているかどうか、またトラフィックがどのくらいあるかについて...
私は個人的に何度も reprisehosting を紹介してきました (私は自分の AS 番号を持っ...
最近、検索業界で最も人気のあるニュースは、360 SearchとBaiduの間のいわゆる「3B」戦争...
.xxx ドメイン名はしばらく前から出回っていますが、その価格は高止まりしており、ドメイン名で遊ぶの...