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 イノベーションを推進する理由

推薦する

ウェブサイト構造の最適化は大規模ポータルサイト運営の要

大規模ポータルサイトの最適化に関しては、ウェブサイトのコンテンツの最適化、キーワードの最適化、外部リ...

GoogleはPR(ページランク)の更新を停止しましたか?

多くのウェブマスターと同様に、Fraiy 氏も管理するサイトの PR 値の変化に細心の注意を払ってき...

A5 Q&A 学習体験: ウェブマスターが上達するためのステップ - インターネットに関することは A5 に質問してください

ウェブマスターコミュニティが形成されて以来、A5 Q&Aは新旧のウェブマスターが疑問を解決す...

競合他社を分析してウェブサイトのランキングを向上させる方法 - A5 Webmaster Network

SEO で成功したいなら、競合相手の分析方法を学ばなければなりません。自分自身と敵を知ることで、あら...

マルチクラウドプラットフォーム環境統合ソリューション

詳細に入る前に、「クラウド統合アーキテクチャとは何ですか?」という質問に答えましょう。クラウド統合ア...

Starry Sky: 優れた B2B 業界向け Web サイトを計画する方法

B2B業界ウェブサイトは、アリババの登場以来、さまざまな業界で業界ウェブサイト設立の波を引き起こして...

国が学校を再開し、「早送りボタン」を押す中、オンライン教室は他に何ができるでしょうか?

文部科学省は3月31日、「2020年度大学入学共通テストの実施時期等に関するお知らせ」を発表した。 ...

「恐れるべき唯一のものは、教育を受けたフーリガンだ」マイクロポルノマーケティングについての短い議論

良い製品を宣伝しなければ、ビジネスは生まれません。大手企業や大手ウェブサイトでは、いたるところでプロ...

WeChat以外にソーシャル分野で戦争はありません!

ソーシャルの世界では、WeChatは2位だと言っていますが、誰も立ち上がって1位だと言う勇気がないの...

グローバルクラウド:新年のVPSプロモーション、香港クラウド/シンガポール/ロシア - 30%オフ、オランダ - 40%オフ、すべてのハイエンド最適化ライン

locvps(グローバルクラウド)が新年プロモーションを開始しました。会場内のコンピュータルームのV...

デバイス・エッジ・クラウドの連携: クラウドからエッジへ

SDX は Software Defined X の略で、ソフトウェア定義パラダイムを意味し、ソフト...

事例分析:テンセントSosoKステーションからの回復方法

テンセントの製品であるテンセントSosoは、QQの力を借りて、侮れないウェブサイト訪問者の源です! ...

ハイブリッド クラウド セキュリティの基礎: 知っておくべき 4 つのこと

[[227650]]他の大規模な IT 変更と同様に、ハイブリッド クラウド モデルを導入するには、...

Ali Lingjie: 企業と開発者がビッグデータ + AI を「すぐに」使用できるようにする

10月20日、2021年雲啓カンファレンスにおいて、アリババグループ副社長兼アリババクラウドコンピュ...