クローラー エンジニアにとって、Kafka は単なるメッセージ キューです。データの書き込み方法と読み取り方法を知っておくだけで十分です。
覚えておいてください: 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 つのトレンド
現在、検索エンジン市場は百度が独占しているが、ウェブマスターが百度に奪われたため、ウェブサイトは他の...
モバイル デバイスの市場シェアが継続的に増加していることから、検索業界の将来はモバイル検索が主流にな...
globalfrag.com は 2008 年に設立され、主に仮想ホスティング、VPS、サーバー レ...
大手ブランドといえば、コカコーラの独特な赤と白のフォント、ナイキのスウッシュ、アディダスのスリースト...
セルフサービス Web サイト構築の仲間に、また一人の初心者が加わりました。友人が Web サイトを...
各業界には独自の言語と用語があります。この記事では、製品と ASO パートナー間のコミュニケーション...
私のように、個人のウェブマスターの大多数は、ウェブサイトを構築した後、検索エンジンで良いランキングを...
2013 年が過ぎ去り、2014 年がやって来ます。今年を振り返ると、合併や買収、IPO、ビットコイ...
王維「ウェアラブルデバイス」や「インターネットハードウェア」がメディアや資本によってトレンドとみなさ...
[51CTO.com クイック翻訳] データによると、2019 年時点でシスコの顧客の 90% がビ...
コアヒント:医薬品価格引き下げネットワークに対する歓声と非難とともに、創設者であるウェイボクシングの...
オフサイトプロモーションには、フレンドリーリンクの構築とリンク情報の公開が含まれます。この仕事は非常...
国内の仮想ホスト市場は巨大なケーキであり、多くの海外のウェブサイトスペースプロバイダーが中国市場を獲...
昨日、ある著者が書いた記事を見ました。その著者は、自分の記事が転載されたが、自分の記事へのリンクは残...
bgp.to は 2006 年に設立された KLAYER LLC の傘下にあります。主に香港、シンガ...