1. Kafkaを理解するKafka とは何でしょうか?それは何に使われますか? 公式の定義は次のとおりです。 Kafka は、リアルタイム データ パイプラインとストリーミング アプリの構築に使用されます。水平方向にスケーラブルで、フォールト トレラント、非常に高速であり、何千もの企業で実稼働されています。 直訳すると、水平展開可能で信頼性の高いリアルタイムデータ処理システムということです! リアルタイムデータ処理は名前から簡単に理解できます。データをリアルタイムで処理することを意味します。現在普及しているマイクロサービス開発において、最も一般的に使用されているリアルタイム データ処理プラットフォームは、RabbitMQ や RocketMQ などのメッセージ ミドルウェアです。 これらのミドルウェアには主に 2 つの機能があります。
Web アプリケーション開発の初期には、リクエスト数が急増したときに、処理するデータをキュー チャネルにプッシュし、別のスレッドを開始してキュー内のデータを継続的にローテーションおよびプルすることで、プログラムの実行効率を高めていました。 ただし、リクエストの数が増加し続け、キュー チャネル内のデータが常に高負荷状態になると、アプリケーションのメモリ使用量が非常に高くなります。注意しないと、メモリが不足し、プログラム メモリのオーバーフローが発生し、サービスが利用できなくなります。 ビジネス量が拡大し続けると、このモデルではアプリケーション内のニーズを満たすことができなくなります。そのため、ActiveMQ、RabbitMQ、RocketMQなどのさまざまなメッセージミドルウェアが誕生しました。 このモデルの本質は、プッシュされるデータが現在のアプリケーションのメモリに保存されるのではなく、データ処理を専門に担当する別のアプリケーションに保存され、それによってサービス分離が実現されることです。 メッセージ ミドルウェア: 主な役割は、メッセージを受信してディスクに保存できるようにすることです。他のサービスに障害が発生しても、データは失われません。データ消費量を監視することもできます。 アプリケーション: メッセージをメッセージ ミドルウェアにプッシュし、スレッドがメッセージ ミドルウェアから継続的にデータをプルして消費を確認できるようにします。 メッセージ ミドルウェアの導入後は、サービス開発全体が簡素化され、全員が自分のタスクに責任を持つようになります。 Kafka は本質的にはメッセージ ミドルウェアの一種です。 Kafka は LinkedIn から生まれ、2010 年に GitHub にオープンソース化されました。 データ パイプラインの問題を解決するために、LinkedIn の開発チームは 2010 年頃にデータ交換に ActiveMQ を最初に採用しました。当時、ActiveMQ は LinkedIn のデータ転送システムの要件を満たすにはほど遠いものでした。さまざまな欠陥により、メッセージがブロックされたり、サービスが利用できなくなったりすることがよくありました。この問題を解決するために、LinkedIn は独自のメッセージング システムを開発することを決定し、Kafka が誕生しました。 LinkedIn では、Kafka は 1 日あたり数十億件のメッセージのメトリックとユーザー アクティビティの追跡を効果的に処理できます。その強力な処理能力は業界で認められ、ビッグデータ パイプラインの推奨テクノロジーとなっています。 2. アーキテクチャの紹介まずは写真を見てみましょう。下の図は、Kafka の生成と消費のコア アーキテクチャ モデルです。 これらの概念を理解していなくても問題ありません。一緒に説明します。
つまり、Kafka は本質的にメッセージング システムです。ほとんどのメッセージング システムと同様に、その主な機能は次のとおりです。
ActiveMQ、RabbitMQ、RocketMQ との違いは、**パーティション** の概念があることです。 このパーティションは、作成するトピックに 5 つのパーティションがある場合、一度に 1,000 個のデータを Kafka にプッシュすると、これらの 1,000 個のデータはデフォルトで 5 つのパーティションに分散され、各パーティションに 200 個のデータが格納されることを意味します。 これを行う目的は、消費者がさまざまなパーティションからデータを簡単に取得できるようにすることです。同時に 5 つのスレッドを開始してデータをプルすると、各スレッドが 1 つのパーティションをプルするため、消費速度が非常に速くなります。 これが Kafka と他のメッセージング システムの最大の違いです。 2.1 データの送信 他のミドルウェアと同様に、Kafka は毎回リーダー パーティションにデータを送信し、それをディスクに順番に書き込みます。次に、リーダー パーティションはデータを各フォロワー パーティションに同期します。マスター パーティションに障害が発生しても、サービスの正常な動作には影響しません。 では、Kafka はどのようにして対応するパーティションにデータを書き込むのでしょうか? Kafka には次の原則があります。 1. データを書き込む際に、書き込むパーティションを指定できます。指定されている場合は、対応するパーティションに書き込みます 2. パーティションが指定されていないが、データのキーが設定されている場合は、キー値に従ってパーティションがハッシュ化されます。 3. パーティションが指定されておらず、キーも設定されていない場合は、ポーリングによってパーティションが選択されます。 2.2 消費データ プロデューサーと同様に、コンシューマーが Kafka クラスターからメッセージをアクティブにプルすると、リーダー パーティションからデータもプルされます。 ここでは、「消費者グループ」という用語に注目する必要があります。 複数のコンシューマーのシナリオを考慮して、Kafka は複数のコンシューマーを持つコンシューマー グループを形成するように設計できます。同じコンシューマー グループ内のコンシューマーは、同じトピックの下にある異なるパーティションからのデータを消費できます。重複した消費を防ぐために、同じパーティションはコンシューマー グループ内のコンシューマーによってのみ消費されます。 ただし、異なるグループが同じパーティションからデータを消費する可能性があります。 これを次のように理解することができます。コンシューマー グループはクライアントであり、メッセージの消費を高速化するために、クライアントは多くのコンシューマーで構成できます。 ただし、グループ内のコンシューマーの数がパーティションの数より多い場合、多くのコンシューマーがアイドル状態になります。 パーティションの数がグループ内のコンシューマーの数より多い場合、1 人のコンシューマーが複数のパーティションの消費を担当することになり、消費パフォーマンスが不均一になります。 したがって、実際のアプリケーションでは、コンシューマー グループ内のコンシューマーの数をパーティションの数と一致させることが推奨されます。 3. Kafkaのインストールただ理論を語っても無駄だ。 Centos7 を例に、kafka のインストールと使用方法を紹介します。 Kafka では、サービス インスタンスのメタデータを保存するために zookeeper が必要なので、kafka をインストールする前に、まず zookeeper をインストールする必要があります。 3.1. ZooKeeperをインストールする Zookeeperのインストール環境はjdkに依存しているため、事前にjdkをインストールする必要があります。
Zookeeperをダウンロードし、ファイルパッケージを解凍します。
データとログのディレクトリを作成する
ZooKeeper を構成する
dataDirとdataLogDirのストレージパスを再構成する 最後に、Zookeeperサービスを開始します
3.2. Kafkaをインストールする 公式 Web サイト http://kafka.apache.org/downloads.html にアクセスして、必要なバージョンをダウンロードしてください。最新の安定バージョン 2.8.0 をダウンロードしました。
必要に応じて構成ファイル server.properties を変更します (オプション)
server.properties ファイルの内容は次のとおりです。
重要なパラメータは 4 つあります。
必要に応じて対応する構成を変更できます。 3.3. Kafkaサービスを開始する
Kafkaサービスを開始する
3.4.トピックを作成する パーティションが 1 つだけ含まれ、レプリカが 1 つだけある testTopic というトピックを作成します。
トピックを表示するには、list topic コマンドを実行します。
出力:
3.5 メッセージの送信 Kafka には、ファイルまたは標準入力から入力を受け取り、それをメッセージとして Kafka クラスターに送信するコマンドライン クライアントが付属しています。デフォルトでは、各行は個別のメッセージとして送信されます。 プロデューサーを実行し、コンソールにメッセージを入力してサーバーに送信します。
2 つの項目を入力して Enter キーを押します。
3.5.メッセージの受信 Kafka には、メッセージを標準出力にダンプするコマンドライン コンシューマーもあります。
出力は次のようになります。
IV.まとめこの記事では主に、Kafka のアーキテクチャ モデルとインストール環境について予備的な概要を説明します。誤解が生じるのは避けられません。ネットユーザーの皆様は批判や苦情を歓迎します。 スペースの制約により、Java 環境での Kafka の適用シナリオについては、次の記事で詳しく紹介します。 |
>>: クラウドベースの継続的インテグレーション (CI)/継続的デリバリー (CD) プラットフォームの選択方法
誰もが「ライブストリーミングはどうやって収益を上げるのか?」という疑問を持っていると思います。まず、...
10年前なら、QQが何なのか分からないという人がいても、それは普通のことでした。インターネットがそれ...
インターネットの発展に伴い、電子商取引は事業主からますます注目を集めるようになりました。おそらく、T...
5G やエッジ コンピューティングなどの新しいトレンドが出現するにつれ、テクノロジーの専門家は、必要...
先週の土曜日に、「SEOはますます方向性を見失っています。2013年に何をすべきか(コンテンツ記事)...
ドメイン名ニュース:長年沈黙していたダブルピンインドメイン名xiaoxing.comが最近、国内の個...
企業が発展するにつれて、ビジネスの変化により IT 設備に大きな負担がかかる可能性があり、また、ビジ...
私はウェブマスターになって4年になりますが、まだ何も達成できていません。これにはさまざまな理由があり...
01大手ブランドの成功は多くの幻想を覆い隠す可能性があり、ブランド名についても同じことが言えます。大...
[51CTO.comより引用] 2013年末、XiaoIceはMicrosoft (Asia) In...
現在、多くの友人が新しいウェブサイトを使用しています。新しいウェブサイトの利点は明らかです。PVが高...
月収10万元の起業の夢を実現するミニプログラム起業支援プラントラフィックサイトは多くのSEO専門家が...
この記事では、コンテナ間、Pod 間、Pod からサービス、外部から内部の 4 つのシナリオにおける...
2月26日のニュース、海外メディアの報道によると、最近、Googleは「Do Not Track」プ...
Easyvm はシンガポールでも VPS サービスを展開しています。シンガポールの VPS は、デフ...