Kafka はなぜこんなに速いのでしょうか?

Kafka はなぜこんなに速いのでしょうか?

システム設計では、メッセージ ミドルウェアは、サービスを非同期にしたり、システムを分離したり、トラフィックのピークを削減したりするために使用されます。よく使われるメッセージミドルウェアには、rabbitMq、activeMq、Alibaba の RocketMq などがあります。それぞれに利点がありますが、スループットの点では kafka が最も優れています。単独の場合、ネットユーザーによる比較は次のようになります。


パフォーマンス比較

Kafka はなぜこんなに速いのでしょうか?

パブリッシュ・サブスクライブモデル

一般的なパブリッシュ/サブスクライブ モデルを次の図に示します。


パブリッシュ・サブスクライブモデル

Kafka を例にとると、プロデューサーはメッセージを生成して Kafka クラスターにプッシュし、コンシューマーは Kafka クラスターからデータをアクティブにプルします。このモデルの利点は、消費率が消費者によって完全に制御されることです。 Kafka クラスターはリザーバーに似ており、プロデューサーがメッセージを生成しすぎてコンシューマーがそれを時間内に消費できないためにコンシューマーが圧倒されることを防ぎます。

Kafka が高速である理由は、プロデューサーによって生成されたメッセージがクラスターに書き込まれる速度と、コンシューマーがメッセージを消費するときにクラスターからメッセージが読み取られる速度という 2 つの側面から分析できます。

高速書き込み

高速書き込みの主な理由は、シーケンシャル書き込みと MMFile の 2 つです。

シーケンシャル書き込み

Kafka はメッセージをハードディスクに保存します。ハードディスクの読み書きは遅いと一般的に考えられていますが、Kafka はなぜ速いのでしょうか?ディスクの読み取りと書き込みが遅いということは、通常、ランダム読み取りと書き込みが遅いことを意味します。これは、ディスクがランダム読み取りと書き込みのそれぞれを物理的にアドレス指定する必要があり、非常に時間のかかる操作であるためです。連続的な読み取りと書き込みの速度は依然として比較的高速です。次の図に示すように:


シーケンシャル書き込み

Kafka は新しいメッセージを受信するたびに、そのメッセージを最後に保存し、メッセージを順番に保存します。ただし、一度保存されたメッセージは削除できません。

消費者が消費するときは、順番に消費します。各コンシューマーには、現在消費されているメッセージの位置を記録するためのオフセットがあります。次の図に示すように:


連続消費

MMファイル

MMFile は、メモリ マッピング テクノロジである Memory Mapped Files の略です。メモリとハードディスクの読み取りおよび書き込み速度の差を解決するために、オペレーティング システムではメモリ マッピング テクノロジを採用しています。メモリは複数のページに分割され、各ページはディスク領域にマップされます。メモリはディスク領域よりはるかに小さいため、ページは先入れ先出し (FIFO)、最近使用されていないもの (LRU) などの特定のアルゴリズムに従ってメモリにロードされることがよくあります。メモリ ページはディスク領域に対応しており、オペレーティング システムは適切な場合にメモリ ページ内のデータを定期的にディスクにフラッシュします。なぜこの方法によって文章作成の効率が向上するのでしょうか?通常、CPU 実行プロセスはセキュリティのためカーネル状態とユーザー状態に分割されます。 iOS デバイスを操作できるのはカーネル状態のみであり、メモリ空間はカーネル空間とユーザー空間に分かれています。通常、メモリ内のデータをディスクに書き込むには、次の手順が必要です。


書き込み操作

データはまずユーザー空間からカーネル空間にコピーされ、次にカーネル空間から IO デバイスに書き込まれます。 MMFile は、ユーザー空間からカーネル空間にデータをコピーするコストを節約します。

高速読み取り

高速な読み取り速度は主にゼロコピー技術によるものです。上記は、メモリ空間からディスクにデータを書き込む手順について説明しています。ディスクからデータを読み取る場合は、その逆になります。具体的なプロセスは以下のとおりです。


読み取り操作

データは最初にディスクからカーネル空間に読み込まれ、次にカーネル空間からユーザー空間にコピーされ、次にソケットにコピーされ、最後にコンシューマーに送信されます。

Linux は、ディスクからカーネル空間にデータを直接コピーできる sendFile システム コールを提供します。これにより、ユーザー空間からカーネル空間にデータをコピーする必要がなくなります。これはいわゆるゼロコピー技術です。

上記の分析は、読み取りと書き込みの観点から、Kafka のスループットが高い理由を示しています。実は、もう一つ重要な理由があります。

大量データ圧縮

Kafka は各メッセージを圧縮するのではなく、メッセージのバッチを圧縮してデータをまとめて送信します。すべてのメッセージをバッチ ファイルに変換し、消費者に直接送信します。

要約すると、Kafka は MMFile テクノロジーを使用してデータをディスクに順番にすばやく書き込み、ゼロコピー テクノロジーを使用して読み取り時にデータをすばやく読み取り、バッチ データ圧縮を通じてデータをコンシューマーに送信します。これがカフカのスピードの秘密です。しかし、ケーキを食べて、ケーキも残すことはできません。速度と信頼性は同時に満たすことはできず、実際のビジネス状況に基づいて両者の間でトレードオフを行う必要があります。たとえば、ログの集約や Web サイトのユーザー行動の分析に Kafka を使用する場合、信頼性よりも速度が重要になります。メッセージの損失が許されないシナリオでは、信頼性が第一の選択肢となる場合があります。

<<:  クラウド コンピューティングはビジネスにどのようなメリットをもたらしますか?

>>:  企業におけるクラウドの拡大を管理するための 7 つのヒント

推薦する

Qvodのサーバーシャ​​ットダウン事件が拡大: 警察が同社に突入したと報道

テンセントテクノロジーニュース、4月22日:Qvodのサーバーのシャットダウンについてオンラインで多...

クラウドコンピューティングの重要性とその主な利点

クラウド コンピューティングは、スケーラビリティと柔軟性の提供、コスト削減の促進、コラボレーションの...

aeserver: ドバイ VPS\ドバイ専用サーバー、月額 19 ドルから、IPv6 をサポート

aeserver はアラブ首長国連邦最大の都市ドバイに登録され、2005 年に事業を開始しました。同...

ウェブサイトがリンクを提供しているときに、「ここをクリック」よりも良い説明方法は何でしょうか?

これまでにも、ユーザーに提供したリンクをクリックしてもらいたいと思っても、どのように誘導したらよいか...

公立病院検索における現在のレベル情報が医療 SEO に与える影響

今日、Souwai の Q&A チャンネルを閲覧していたところ、次のような質問を見つけました...

新しいカリキュラム改革の精神に従い、Ruijie GPUクラウドデスクトップが武漢玉才第2小学校の新たな選択肢となる

武漢玉才第二小学校は1989年8月に設立されました。この学校は優秀な教員を擁し、独特の学校特色と目覚...

外食産業にもWeiboマーケティングが必要な理由

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスインターネットの発展とマ...

クラウド出口戦略の8つの重要なステップ

クラウドベースのワークロードとアプリケーションをオンプレミスの施設に移行する場合は、計画を立て、開始...

すべての IT リーダーが答えなければならないクラウド戦略に関する 9 つの質問

今の問題は、企業がクラウドに移行しているかどうかではなく、それがどれだけうまく進んでいるかということ...

Dockerデータ量とDockerFileの学習

オープンソースの詳細については、以下をご覧ください。 51CTO オープンソース基本ソフトウェアコミ...

ヤフーはフェイスブックに対する特許訴訟を拡大し、12件の特許を侵害していると主張している

Sina Technology News:北京時間4月28日早朝のニュースによると、Yahooは金曜...

#11.11# 678CDN: 50% 割引、アジアの高速/高防御 CDN、CC 防御戦略のカスタマイズ、わずか 25 元から

11月のゴールデンプロモーション月間に入りました。678cdn では、ダブルイレブンのお買い得価格(...

ASOプロモーションと運用経験の共有:App Storeで1日あたり1000件以上の新規アクティベーションを無料で獲得

この試みを経て、基本的に以下の結論を導き出すことができます。ランキング操作の有無に関わらず、ASO ...

クラウドコンピューティングがチップ設計にもたらす革命

チップ設計における目標は、物事をより速く、より良くすることです。今では、クラウドが加わったことで、状...

IBM、クラウドコンピューティング事業の責任者に元バンク・オブ・アメリカのCTOを任命

4月7日、海外メディアの報道によると、IBMの新CEO、アルヴィンド・クリシュナ氏が現地時間月曜日に...