Kafka の情報はどのように消費されるのでしょうか?

Kafka の情報はどのように消費されるのでしょうか?

クローラー エンジニアにとって、Kafka は単なるメッセージ キューです。データの書き込み方法と読み取り方法を知っておくだけで十分です。

[[285596]]

覚えておいてください: Kafka の使用は簡単ですが、Kafka クラスターの構築、保守、調整は面倒です。 Kafka クラスターは専任の担当者によって保守される必要があります。この仕事が簡単にできると思ってはいけません。 「この記事と、Kafka に関する今後のいくつかの記事は、クローラー エンジニアまたは Kafka を使用する必要があるだけの読者を対象としています。Kafka のより深い詳細とコア原則については、ここで説明する範囲を超えています。便宜上、Kafka の一部の用語では、不正確ではありますが意味のある類推を使用します。インタビューでこれらの用語を説明する必要がある場合は、Kafka の公式ドキュメントをお読みください。」

今日議論するトピックの 1 つは、Kafka がどのようにして、単一プログラムの複数のプロセスに対して継続的な消費、ブレークポイントの再開、並列消費を実現するか、また、複数のプログラムが互いに影響を及ぼさず、独立していることを保証するかということです。

Kafka には複数の異なるキューが存在する場合があります。このキューをトピックと呼びます。キューの 1 つが次の図のようになっているとします。

情報は右から入って左から出てきます。これが Redis リストの場合、メッセージがポップアップ表示された後、キューは次のようになります。

左端のメッセージ 1 がありません。したがって、情報 1 を消費した直後にプログラムを閉じて再度開いた場合でも、プログラムは情報 2 から消費し続け、情報 1 を 2 回消費することはありません。

しかし、プログラムが 2 つある場合はどうなるでしょうか?プログラム 1 は各データを読み取り、それをデータベースに転送します。プログラム 2 は各データを読み取り、キーワードが含まれているかどうかを確認します。この場合、情報 1 はプログラム 1 とプログラム 2 で使用できるはずです。しかし、上記の解決策は明らかに実現可能ではありません。プログラム 1 が情報 1 を消費すると、プログラム 2 はそれを取得できなくなります。

そのため、Kafka では情報はキューに残りますが、次の図に示すように、プログラムごとに現在どのデータが消費されているかを記録するための個別のマーカーが存在します。

プログラム 1 が Kafka 内の次のデータを読み取ろうとすると、Kafka はまず現在の位置マーカーを 1 つ右に移動し、新しい値を返します。マークの移動とマークの戻りの 2 つの操作は、一緒にアトミック操作と見なされ、繰り返し読み取りの問題は発生しません。

プログラム 1 とプログラム 2 は異なるタグを使用するため、それぞれのタグが指す値は互いに影響しません。

プログラム3を追加する場合は、マークを1つ追加するだけです。この新しいマークも、以前の 2 つのマークの影響を受けません。

これにより、複数の異なるプログラムが Kafka を読み取るときに、それらが互いに影響を及ぼさないことが保証されます。

ここで、プログラム 1 の消費が遅すぎると考え、プログラム 1 を同時に 3 回実行した場合、マーキングとシフトはアトミック操作であるため、プログラムが同時に Kafka を読み取っているように見えても、Kafka はそれらを内部的に「キュー」に入れ、返される結果が重複したり、欠落したりしないようにします。

Kafka のチュートリアルをオンラインで見ると、Offset と呼ばれるものが言及されていることがわかります。これは実際には、この記事で言及されている各プログラムの現在のデータを指すマークです。

また、「グループ」というキーワードも表示されますが、これは実際にはこの記事のプログラム 1、プログラム 2、プログラム 3 に相当します。

同じキューに対して、複数のプログラムが異なるグループを使用して消費する場合、読み取るデータは互いに干渉しません。

同じキューに対して、同じグループの複数のプロセスがデータを消費すると、Redis で lpop 操作を実行するように見えます。

最後に、インターネット上の Kafka に関する記事では、必ず「Paritition」または「Chinese sharding」という単語が出てきます。そして、あなたはこのことを理解できないことに気づくでしょう。

気にしないで、忘れてください。トピックに含まれるパーティションの数と、同じグループを読み取るために最大でいくつのプロセスを開始できるかを知るだけで十分です。 ——トピックに 3 つのパーティションがある場合、同じグループを同時に読み取るために開くことができるプロセスは最大 3 つだけです。トピックに 5 つのパーティションがある場合、同じグループを読み取るために開始できるプロセスは最大 5 つだけです。

<<:  Inspurは、ビジネスからITまでのラストマイルをつなぐ最高のaPaaSソリューションを提供します

>>:  2020 年のエンタープライズ クラウド戦略の 5 つのトレンド

推薦する

#黒5# pcloud: 生涯クラウドストレージ、120~500Gドル、245~2Tドル

2003 年、スイスで若者のグループが pcloud というクラウド ストレージ ブランドを設立しま...

感情的な影響を与えるソフトコピーマーケティングについての簡単な説明

写真だけの商品広告は絶対に売れません。文字だけの商品広告は必ずしも売れないわけではありません。これは...

SEO で良い成果を上げるためにユーザー心理を分析する方法

SEOをうまく行うのは非常に難しいです。多くのことを学び、Baiduとともに進歩する必要があります。...

ウェブサイトのキーワードランキングを向上させる方法

Baidu がアルゴリズムの更新を続けた結果、多くの SEO 実践者は SEO の終焉が近づいている...

juhost Japanはどうですか? Juhost Japan BGP回線VPSの簡単評価

Juhost は最近、日本の BGP 回線を備えた新しい日本の VPS を立ち上げました。デフォルト...

クラウドネイティブ革命によってもたらされたログ管理の課題にどう対処すればよいでしょうか?

以前は、ログ管理は比較的単純でした。ログの数、種類、構造はシンプルで管理しやすいです。しかし、ここ数...

ライトイヤーフォーラムの閉鎖理由からSEOの発展

最近、多くの SEO 担当者が、Light Year Forum が閉鎖されたという話題について議論...

dreamhost: 新年のフラッシュセール、無制限のウェブサイトホスティングが年間わずか 35.4 ドル (無料ドメイン名付き)

Dreamhost、この古いホスティングブランドは現在、新年のフラッシュセールを開催しています。ウェ...

10月23日にハイパーリンク不正行為に対抗するために百度が実施したアルゴリズムアップグレードの解釈

先ほど、Baidu Webmaster Platform で「ハイパーリンク不正のアルゴリズムアップ...

Aizhanのランキングが上回ったという認識から見るユーザーエクスペリエンスとSEOの重要性

ウェブマスター ツールは、業界で毎日使用される必須のツールです。SEO の登場以来、ウェブマスター ...

クラウドネイティブの可観測性に関する簡単な講演

背景現在、デジタル変革のプロセスは加速し続けています。トップレベル設計の指導の下、自社の開発ニーズと...

分散理論を説明するのに太極拳を使うのはとても快適です!

[[361252]] 『天剣龍驤』では、趙敏公主が専門家集団を率いて武当山を包囲しました。武当のリー...

どのようなタイプの外部リンクがよいかについての詳細な説明

SEO 業界を離れてから 2 年以上経ちました。最近、友人の依頼で、いくつかのサイトの SEO 作業...

集団的な躍進の後、中国のパブリッククラウドの次のステップは何でしょうか?

International Data Corporation (IDC) が最近発表したレポートによ...