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

推薦する

Webmaster.com からの毎日のレポート: Pinterest のような企業は締め出され、Kuxun の航空券代理店は逃げ出している

1. Kuxun.comのチケットエージェントが逃走し、公安機関が捜査に介入国慶節のゴールデンウィー...

必須のクラウド インフラストラクチャ自動化ツール 7 つ

現代のワークロードと厳しい配信スケジュールにより、組織は IT 運用とアプリケーション配信の効率化に...

Baidu Experienceを観光ネットワークを促進する魔法の武器にしましょう

最近、私は百度体験を利用して長沙から鳳凰観光ネットワークへのプロモーションに大きな成功を収めました。...

クラウド コンピューティングのトレンド: Amazon、Google、Microsoft などの巨大企業の独占は打破されるでしょうか?

アナリスト会社フォレスターによると、パブリッククラウドは本質的に柔軟性が高いため、革命的な世代のテク...

インターネット時代のトラフィックプロモーションの重要な方法は何ですか?

月収10万元の起業の夢を実現するミニプログラム起業支援プラン現在、伝統的な営業マンの仕事は徐々に消滅...

外部リンク構築の新たな場所: 軽量ブログが利点を発揮

ライトブログは、ブログとマイクロブログの中間のネットワークサービスです。ブログは表現力に富む傾向があ...

Amazon Web Services: 中国企業の海外進出を支援する6つの機能

近年、デジタル技術の推進により、ますます多くの中国企業が海外事業拡大のペースを加速させています。中国...

SEOの観点からサイトの価値を評価する方法

土地の価値評価に関して、「土地の価値を直接見積もることができる専門のウェブサイトがあるのだろうか」と...

ストックウェブサイト構築のヒント

市場経済の発展に伴い、垂直産業の細分化の傾向がますます顕著になっています。多くの業界の中で、株式や金...

インターネットマーケティング: ソーシャルプラットフォームからオーディエンス心理を分析する

まず、私はSEO担当者であることを述べておきますが、これはオンラインマーケティングへの関心を否定する...

クラウドコンピューティングの成功はITの変革にかかっている

CIO の Neil Holden 氏が Halfords グループをさらにクラウドに移行したとき、...

草の根健康ウェブサイトの将来についての簡単な議論

現在のインターネットには、あらゆる業界にとってのケーキがあり、このケーキは 1 人または 1 つの組...

天一クラウドの5G時代:モバイルインターネットからあらゆるもののインターネットへ

9月12日、「5GクラウドネットワークスマートIoT」-中国電信天一クラウド5Gクラウドネットワーク...

青雲の真の魂:効率的、便利、信頼性、包括的

[51CTO.com からのオリジナル記事] サーバーのダウンタイムは、開発者や運用・保守担当者にと...

ウェブマスターネットワークの最初のタオバオSEOトレーニングコースの申し込み受付が始まりました

Taobao 検索ランキングの最適化は、Taobao SEO とも呼ばれ、Taobao ストアを開設...