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) プラットフォームの選択方法
Baidu Tieba は Baidu 傘下の独立ブランドです。Tieba 設立の目的は、同業者間の...
VMware (NYSE: VMW) は本日、2023 会計年度の第 3 四半期の業績を発表しました...
この記事は、DCOS (公開アカウントID: indagate) の許可を得て転載したものです。転載...
この記事では、k8s に関係する中核的な概念に焦点を当てています。これにより、読者は全体的な観点から...
2019年の国慶節の連休は2019年10月1日から10月7日までです。そのため、本レポートでは主に2...
Baidu はコンテンツに、Alibaba は電子商取引に、Tencent はソーシャル ネットワー...
世界中でインフレが発生する中、企業は最適化策を通じてクラウド コンピューティングのコストをどのように...
3四半期後、Huyaはようやく利益の回復を見ました。最近、Huyaはやや悲観的でない第3四半期の報告...
zgovps (zgocloud) のドイツ VPS は現在在庫があり、販売中です。デフォルトは、C...
gcorelabs は最近、オランダのデータセンターで、20 コア (2 x E5-2630v4)、...
netcloudは設立されてまだ日が浅いVPS事業者ですが、ドメイン名はかなり古くから存在しています...
エンタープライズ開発者は忙しいです。顧客の期待はかつてないほど高まっており、情報への高速かつ安全なモ...
コンテナ オーケストレーションに関して言えば、Google が開発したオープン ソース ツールである...
権威ある統計によると、中国のインターネット利用者数は4億人を超え、世界最大となり、現在も急速に増加し...
ドバイに登録されている会社である Hostsailor (登録番号 A224/03/14/8150、...