Kafka はどのようにして数十万件の書き込みの高い同時実行性を実現するのでしょうか?

Kafka はどのようにして数十万件の書き込みの高い同時実行性を実現するのでしょうか?

  [[285197]]

導入

最近は人気のMQがたくさんあります。弊社では技術選定でKafkaを採用することになりましたので、Kafkaの紹介記事をまとめました。技術選択を通じて、業界で主流の MQ を比較しました。 Kakfa の最大の利点は、その高いスループットです。

Kafka は、高スループットと低レイテンシを備えた、高同時実行性と高性能を備えたメッセージ ミドルウェアです。ビッグデータの分野で広く利用されています。適切に構成された Kafka クラスターでは、1 秒あたり数十万または数百万という超高速の同時書き込みも実現できます。

では、Kafka はどのようにしてこのような高いスループットとパフォーマンスを実現するのでしょうか?作業を開始したら、Kafka のアーキテクチャ設計原則を詳しく見ていきましょう。これらの原則を習得すると、インターネット面接で有利になります。

持続性

Kafka は、メッセージを保存およびキャッシュするためにファイル システムに依存します。データが受信されるたびに、ディスクに書き込まれます。 「ディスクは遅い」という一般的な印象から、永続的なアーキテクチャが強力なパフォーマンスを提供できるかどうか疑問に思う人もいます。

実際には、ディスクの使用方法に応じて、ディスクの速度は予想よりもはるかに遅くなったり、はるかに速くなったりすることがあります。また、適切に設計されたディスク構造は、多くの場合、ネットワークと同じくらい高速になります。

上記の数値を比較すると、場合によってはシーケンシャル ディスク アクセスの方がランダム メモリ アクセスよりも実際に高速であることがわかります。実際、Kafka はこの利点を利用して、高性能なディスク書き込みを実現しています。

参照: http://kafka.apachecn.org/documentation.html#persistence

ページキャッシュ技術 + ディスクシーケンシャル書き込み

ディスク書き込みパフォーマンスを確保するために、Kafka はまずオペレーティング システムのページ キャッシュに基づいてファイル書き込みを実装します。

オペレーティング システム自体には、ページ キャッシュと呼ばれるキャッシュ レイヤーがあり、これはメモリ内のキャッシュです。これを OS キャッシュと呼ぶこともできます。これは、オペレーティング システム自体によって管理されるキャッシュを意味します。

ディスク ファイルを書き込むときは、OS キャッシュに直接書き込むことができます。つまり、メモリに書き込むだけです。次に、オペレーティング システムは、OS キャッシュ内のデータを実際にディスクにフラッシュするタイミングを決定します。

上記の方法により、ディスク ファイルの書き込みパフォーマンスが大幅に向上します。実際、この方法はディスクへの書き込みではなく、メモリへの書き込みと同じです。

ディスクへの順次書き込み

もう 1 つの非常に重要な点は、Kafka がデータを書き込むときに、ディスクの順序でディスクに書き込むことです。つまり、ファイル内のランダムな場所のデータを変更するのではなく、ファイルの末尾にのみデータを追加します (追加)。

通常の機械式ハードドライブの場合、ランダムに書き込むとパフォーマンスが非常に低くなり、ディスクのアドレス指定に問題が発生します。ただし、ファイルの末尾にデータを追加して順次書き込むだけの場合、順次ディスク書き込みのパフォーマンスは、メモリへの書き込みのパフォーマンスと基本的に同じです。

要約すると、Kafka はページ キャッシュ テクノロジー + ディスク シーケンシャル書き込みテクノロジーに基づいて、データ書き込みの超高性能を実現します。

したがって、1 秒あたり数万、あるいは数十万のデータを確実に書き込むための重要なポイントは、各データの書き込みパフォーマンスを最大化し、単位時間あたりに書き込めるデータを増やしてスループットを向上させることです。

ゼロコピー技術

書くことについて話した後は、消費について話しましょう。

ご存知のとおり、Kafka からデータを取得する必要が頻繁に生じます。消費時には、次の図に示すように、実際に Kafka のディスク ファイルからデータを読み取り、下流のコンシューマーに送信する必要があります。

Kafka がディスクからデータを読み取り、上記の方法で下流のコンシューマーに送信する場合、プロセスはおおよそ次のようになります。

  1. まず、読み取るデータが OS キャッシュにあるかどうかを確認します。そうでない場合は、ディスク ファイルからデータを読み取り、OS キャッシュに格納します。
  2. 次に、データはオペレーティング システムの OS キャッシュからアプリケーション プロセスのキャッシュにコピーされ、次にアプリケーション プロセスのキャッシュからオペレーティング システム レベルのソケット キャッシュにコピーされます。最後に、データはソケット キャッシュから抽出され、ネットワーク カードに送信され、最終的に下流のコンシューマーに送信されます。

全体のプロセスは次のとおりです。

上の図からわかるように、このプロセス全体では不要なコピーが 2 つあります。

オペレーティング システムのキャッシュからアプリケーション プロセスのキャッシュにコピーされ、その後、アプリケーション キャッシュからオペレーティング システムのソケット キャッシュにコピーされます。

これら 2 つのコピーを実行するために、途中で複数のコンテキスト スイッチが発生しました。アプリケーションが実行されている場合もあれば、実行のためにコンテキストがオペレーティング システムに切り替えられている場合もあります。

したがって、このデータ読み取り方法では、より多くのパフォーマンスが消費されます。

この問題を解決するために、Kafka はデータの読み取り時にゼロコピー技術を導入します。

つまり、オペレーティング システムのキャッシュ内のデータは、データをコピーする 2 つの手順をスキップして、ネットワーク カードに直接送信され、下流の消費者に送信されます。ソケット キャッシュには記述子のみがコピーされ、データはコピーされません。

この素晴らしいプロセスを体験してみましょう。

ゼロコピー技術により、OS キャッシュ内のデータをアプリケーション キャッシュにコピーしたり、アプリケーション キャッシュからソケット キャッシュにコピーしたりする必要がなくなります。両方のコピーが省略されるため、ゼロコピーと呼ばれます。

ソケット キャッシュはデータ記述子をコピーするだけで、その後、データは OS キャッシュからネットワーク カードに直接送信されます。このプロセスにより、データ消費中のファイル データの読み取りパフォーマンスが大幅に向上します。

また、ディスクからデータを読み取るときに、まずそのデータが OS キャッシュ メモリ内にあるかどうかがチェックされることに気づくでしょう。そうであれば、データは実際にはメモリから直接読み取られます。

Kafka クラスターが適切に調整されている場合、大量のデータが OS キャッシュに直接書き込まれ、その後 OS キャッシュから読み取られることがわかります。

これは、Kafka が完全にメモリに基づいてデータの書き込みと読み取りを提供するのと同じであり、全体的なパフォーマンスが非常に高くなります。

要約する

Kafka の優れた設計を研究することで、Kafka の基盤となるページ キャッシュ テクノロジの使用、ディスクの順次書き込みの考え方、ゼロ コピー テクノロジの適用を理解し、これらによって Kafka がこのような高いパフォーマンスを発揮し、1 秒あたり数十万のスループットを達成できることがわかります。

用語集

スループット (TPS): スループットとは、ネットワーク、デバイス、ポート、仮想回線、またはその他の施設で単位時間あたりに正常に送信されるデータの量を指します (ビット、バイト、パケットなどで測定されます)。

<<:  変化の時 Yanrong TechnologyがYRCloudFileストレージ製品をリリース

>>:  クラウド コンピューティングが 2020 年に政府の IT イノベーションを推進する理由

推薦する

3か月後の新しいウェブサイトの最適化のアイデアとプロセス分析

ご存知のとおり、電子商取引の発展に伴い、ウェブサイトの最適化における企業間の競争はますます激しくなっ...

テンセントクラウドとソウル観光体育局がスマート観光プラットフォームの構築で協力

テンセントクラウドは5月18日、韓国ソウル観光体育局との提携を発表した。 Tencent Cloud...

百度の25回目のアルゴリズムアップグレードが医療業界に与える影響とその意味

6月28日の事件以来、百度はユーザーエクスペリエンスとネットワーク環境の向上、そしてユーザーへのより...

ベンチャーキャピタルに不満を抱き、共同購入サイトは利益を求めている

ベンチャーキャピタルに依存して急速に拡大し、市場シェアを獲得した共同購入ウェブサイトは、短期的な株式...

Cloudcone: 6 周年、ロサンゼルス VPS は年間 21 ドルから、メモリ 1G/コア 2 個/SSD 30g/トラフィック 1 個

cloudcone は現在、ロサンゼルスに 1 つのデータセンター (multacom) のみを持っ...

2014年に個人ウェブマスターにとって最も価値のあるビジネスモデル:セルフメディアスター

お金も技術もリソースもないのに、私たち草の根ウェブマスターに他に何ができるでしょうか? 急速に発展し...

Flash ウェブサイト SEO のベスト プラクティス

Flash SEO はよくある問題ではありません。Flash を使用して Web サイト全体を作成す...

公証役場のウェブサイトが日本の出会い系サイトに変貌。当局は新たなウェブサイトに登録するとしている。

明らかに省公証役場のウェブサイトをクリックしたのに、なぜ日本の出会い系サイトが表示されたのでしょうか...

2020 GIDC: Tianyi Cloud CDN コンテナが新しいクラウド、ネットワーク、エッジ エコシステムの構築を支援

2020年、新型コロナウイルス感染症のパンデミックが世界を席巻し、伝統的な実体経済は大きな打撃を受け...

30日間の降格後、百度の権威を回復する方法

みなさんこんにちは。今日もここでお会いできて嬉しいです。最近は体重の回復に忙しくて、とても疲れていま...

煩わしい Windows 10 の自動更新に別れを告げる 3 つの簡単な方法をお教えします

昨年の夏、Microsoft が Windows 10 Anniversary Update をリリ...

目立たないインターネットトラフィックの巨人たちは何をしているのでしょうか?

なぜ、非常に偽物っぽい名前とシンプルなページデザインのウェブサイトが、インターネット上の巨大なトラフ...

オリジナルコンテンツは「効果的」であることが判明

アルゴリズムの継続的な更新により、Baidu はオリジナル コンテンツが検索エンジンでより人気が出る...

VMware が Forrester によってゼロ トラスト ネットワーク アクセスのリーダーに選出

VMware (NYSE: VMW) は最近、世界的な市場調査会社 Forrester が Forr...