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) プラットフォームの選択方法
過去に Prometeus が攻撃を受けた際、ターゲット IP を無効化することしかできなかったため...
HostflyteのCN2 VPS(CN2 GT、片道)が20%オフで販売されています。国内の往路は...
Namecheap の .me ドメイン名プロモーションは終了しましたが、今度は Namecheap...
2019年もすでに半分以上が過ぎました。今年上半期を振り返って、モバイルインターネット業界ではどのよ...
justhost.asiaは、ネットワークの包括的な最適化を実施したことを公式に発表しました。Chi...
みなさんこんにちは。私はHongtu Internetです。ウェブサイト上の内部リンクの概念とは何で...
Baidu を使用する際に、Baidu スナップショット後の Baidu 共有データに注目したことが...
eName.cnは5月16日、最近Qianzhan.comのドメイン名が盗まれ、数億元の損失をもたら...
多くの企業が SEO を選択する理由は、2 つの言葉で表せます。それは「安い」ということです。広告は...
広告はほとんどのウェブサイトが生き残るための手段の 1 つであり、一部のウェブサイトではそれが収入源...
Huawei は、2019 年の Mobile World Congress (MWC) で、次世代...
前述したように、クラウド コンピューティングはクラウドベースのコンピューティング方法であり、クラウド...
淘宝網が美麗碼と莫谷街へのログイン機能を廃止した後、この2つのソーシャル電子商取引プラットフォームは...
サイト設計の基本原則は、優れた訪問者エクスペリエンス、つまり訪問者中心の設計であることはわかっていま...
分散データベースに興味のある友人は、Google の F1 と Spanner が NewSQL テ...