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 には次の原則があります。
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 の適用シナリオについては、次の記事で詳しく紹介します。 5. 参考1. Zhihu - Javaリーダー - 30分でKafkaの仕組みがわかる |
>>: Azure Kubernetes 構築シナリオ アプリケーションに関するワンストップ ディスカッション
現在、60% を超える組織が、新しいアプリケーションの大部分がクラウドで構築されていると報告していま...
インターネットの発展は社会の形態を変えました。オフラインからオンラインへ、実体経済から電子商取引へ、...
ZenlayerはすでにUAEデータセンターを立ち上げており、世界で最も豪華な都市であるドバイに位置...
SEO環境において、フレンドリーリンクはウェブサイト間の相互プロモーションの基本的な手段から、ウェブ...
skb-enterprise (~、VAT.NL857990822B01、CC.no. 697377...
オンラインマーケターとして、私は今困惑しています。オンライン情報がたくさんある中で、どうすればオンラ...
Cheapwindowsvps.com を紹介したい理由は 2 つあります。1 つ目は、 G ポート...
データの出現により、ビジネス インテリジェンスは真に 21 世紀に移行しました。しかし実際には、「ビ...
私のように、多くのウェブマスターがGGとBaiduのインデックスを分析したことがあると思います。この...
業界全体のユーザー規模から見ると、オンラインビデオ分野のアクティブユーザー規模の成長率は鈍化し、年末...
利益をもたらすマーケティング チャネルは、ブランド オーナーの時間と投資に見合う価値があります。この...
photonvps で新しい KVM VPS がリリースされた後、Hostcat はすぐに 512M...
近年、Weiboプロモーションもオンラインマーケティングの主な手段の一つとなっています。WeChat...
「10万件以上は欲しい」「圧倒的な案件を作ろう」「ヒットを出したい」…限られた予算、膨大なトラフィッ...
DouyinやKuaishouなどの大手プラットフォームが動画コンテンツ業界全体の注目を集めるように...