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

推薦する

Kafka クラスターの構築

1. 背景最近kafkaを勉強しています。 Mac 上で Kafka クラスターを構築する手順は次の...

タイトルを変更してウェブサイトのスナップショットを更新する方法の実践的な分析

ウェブマスターがウェブサイトの品質を判断する際に最も重要な要素の 1 つは、ウェブサイトのスナップシ...

ウェブサイトを運営するウェブマスターはテレビを無視してはならない

多くの人が、Baidu Hot List や Google Hot List を使用してキーワードの...

Alipay のお知らせ: ICBC カードのクイック支払いの登録に失敗しました。カードの交換をお勧めします

Alipayのお知らせ: ユーザーがICBCカードのクイック支払いにサインアップできない場合は、IC...

Google I/O 2018: Google Instant Games がすべての Android 開発者に公開

米国現地時間5月8日午前10時(北京時間5月9日)、3日間にわたる2018 Google I/O 開...

ウェブマスターネットワークレポート:WeChat iOS 5.0ベータ版が公開され、Baidu Weigouが電子商取引を混乱させる

1. Android トロイの木馬は管理者権限を乗っ取り、権限を削除できない北京時間6月7日のニュー...

インターネット製品を持たない従来の企業は、どのようにして自社メディア チャネルを利用して顧客を獲得できるのでしょうか?

中国のインターネットは、10年ごとに大きな変化が起こり、5年ごとに転換点を迎え、現在では1、2年ごと...

サービスとしてのデータベースのさまざまな形態

これは、独自の IT インフラストラクチャ上でのデータベースの従来の手動インストールと管理とは異なり...

中国エンタープライズ クール カスタマー マーケティングが正式に開始されました。限定の社内ベータ イベントを見逃すと後悔することになります。

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますChina...

私たちが一緒に取り組んできたインターネットブランドプロモーション

百度の目に「ブランド」という言葉を植え付けたのは誰でしょうか。私たちのインターネット生活にブランドの...

「盲目的に走った51クレジットカード」は「存亡の危機」から逃れられない

10月21日、51クレジットカードが突然大手メディアの見出しを飾りました。浙江省警察は数百人の警官を...

terrahost: ノルウェー VPS、月額 0.92 ユーロ、256M メモリ/1 コア/30g NVMe/1T トラフィック

2006 年にノルウェーのオスロで設立された Terrahost は、独自のデータ センターを所有お...

マーケティングとは何ですか?消費者の「欲」をつかみ、「良い」商品を見せる

ブログを閉鎖して再開してから、長い間ブログを書いていませんでした。一方で、Web サイトの構築テクニ...

テンセントの2019年第1四半期の収益は854億元を超え、クラウド事業は急成長を維持

本日、テンセントは2019年第1四半期の業績を発表しました。財務報告によると、2019年第1四半期の...