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) プラットフォームの選択方法
2013年10月のOTAエンタープライズモバイル市場シェア2 人の参加者がお金を分ける「最後通牒」ゲ...
テンセントは創業から22年を経て、どれだけの自社開発技術を蓄積してきたのでしょうか?データセンターや...
業界分析会社 RedMonk は本日、最も人気のあるプログラミング言語の最新の四半期ランキングを発表...
Forrester は 2021 年の技術予測シリーズを発表しましたが、その中にはエッジ コンピュー...
1. オンラインゲーム業界のグレーチェーンが暴露:詐欺サイトがフランチャイズシステムを通じて会員を募...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますウェブサイ...
tothost (~) は現在、ベトナム VPS を 20% 割引で提供しており、月額 2.4 ドル...
インフォア、経営幹部の任命を発表ケビン・サミュエルソンがCEOに昇進、チャールズ・フィリップスが取締...
最適化が適切かどうかをどのように判断しますか?最適化が適切に行われているかどうかをどのように判断しま...
微博の第3四半期財務報告が発表され、天井問題が再び浮上した。財務報告によると、2019年9月のWei...
7月以降、Baidu百科事典のエントリを作成するのが非常に困難になっていることに気付きましたか? 以...
2019年の国慶節が近づいており、大規模データセンターのDwidcが利益分配活動のピークを迎えた特別...
呂梁は、涼しく快適な気候、安定した地質構造、豊富な電力供給など、明らかな立地上の優位性を備えており、...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスWeiboは、インターネ...
Flappy Bird は今年 2 月 10 日に開発元によって主要ストアから削除されましたが、その...