ビッグデータ開発の最もホットな技術であるKafkaの背後にある「ブラックテクノロジー」

ビッグデータ開発の最もホットな技術であるKafkaの背後にある「ブラックテクノロジー」

Kafka は、Apache Software Foundation によって開発されたオープンソースのストリーム処理プラットフォームです。データのバッファリング、非同期通信、ログの集約、システムの分離などに広く使用されています。他の一般的なメッセージング システムと比較して、Kafka はほとんどの機能特性を保証するだけでなく、高スループットと低レイテンシで優れたパフォーマンスを発揮します。この記事は、Kafka の使用方法や実装を紹介する他の記事とは異なります。ここでは、Kafka が優れたパフォーマンスを実現するために使用する「ブラック テクノロジー」についてのみ説明します。

  • メッセージはディスクに順番に書き込まれる

ほとんどのディスクは依然として機械的な構造です (SSD はこの議論の範囲外です)。メッセージがディスク上にランダム書き込みモードで保存される場合、シリンダー、ヘッド、セクターでアドレス指定する必要があります。アドレス指定は「機械的な動作」であり、最も時間がかかります。ハードディスクの読み取りと書き込みの速度を上げるために、Kafka はシーケンシャル I/O を使用します。

図1 Kafka シーケンシャルIO

上図では、各パーティションがファイルであり、各メッセージがパーティションに追加されます。ディスクへの順次書き込みなので、効率が非常に高くなります。この方法には欠陥があり、データを削除する方法がないため、Kafka はデータを削除しません。すべてのデータが保持されます。各コンシューマーには、どのデータが読み取られたかを示すためにトピックごとにオフセットがあります。

ディスクのシーケンシャル読み取りと書き込み、およびランダム読み取りと書き込みのパフォーマンスに関しては、Kafka の担当者が提供した一連のテスト データが引用されています (Raid-5、7200rpm)。

  • シーケンスI/O: 600MB/秒
  • ランダムI/O: 100KB/秒

したがって、シーケンス I/O のみを実行することで、Kafka のパフォーマンスが大幅に向上します。

  • ゼロコピー

Web プログラムがファイルの内容を読み取り、それをネットワークに送信するシナリオを考えてみましょう。この実装のコアコードは次のとおりです。


図2 一般的な読み取り方法

呼び出しは 2 回だけですが、CPU コピーが 2 回、ユーザー モードとカーネル モード間のコンテキスト スイッチが複数回発生するなど、コピーが 4 回あるため、CPU の負担が増加します。ゼロコピーは、この非効率性を解決するために設計されています。

# mmap:

コピー数を減らす 1 つの方法は、read() の代わりに mmap() を呼び出すことです。


アプリケーションが mmap() を呼び出すと、ディスク上のデータが DMA 経由でカーネル バッファーにコピーされます。オペレーティング システムはこのカーネル バッファーをアプリケーションと共有するため、カーネル バッファーの内容をユーザー スペースにコピーする必要はありません。アプリケーションは再度 write() を呼び出し、オペレーティング システムはカーネル バッファーの内容をソケット バッファーに直接コピーし、最後にデータをネットワーク カードに送信します。

図3 mmap法

mmap を使用すると CPU コピーを 1 つ減らすことができますが、いくつかの落とし穴があります。プログラムがファイルをマップしたが、そのファイルが別のプロセスによって切り捨てられた場合 (truncate)、不正なアドレスにアクセスしたため、書き込みシステム コールは SIGBUS シグナルによって終了します。この問題は通常、SIGBUS シグナルのシグナル ハンドラーを作成するか、ファイル リースを使用することで解決できますが、これについてはここでは説明しません。

# 送信ファイル:

カーネル バージョン 2.1 以降、Linux では操作を簡素化するために sendfile が導入されました。


図4 sendfileメソッド

sendfile() メソッドは、DMA エンジンをトリガーしてファイルの内容を読み取りバッファーにコピーし (DMA コピー)、次にカーネルがデータをソケット バッファーにコピーし (CPU コピー)、最後にネットワーク カードにコピーします (DMA コピー)。 sendfile を使用すると、データのコピー数が減るだけでなく、コンテキストの切り替えも減ります。データ転送は常にカーネル空間でのみ行われます。

この時点で、sendfile には少なくとも 1 つの CPU コピーが必要なので、この手順を省略できますか?カーネルによって実行されるすべてのデータのコピーを排除するには、収集操作をサポートするネットワーク インターフェイスが必要です。同時に、カーネル バージョン 2.4 では、ソケット バッファー記述子もゼロコピー要件に適合するように変更されました。このアプローチは、複数のコンテキストスイッチを削減するだけでなく、CPU コピーも完全に排除します。

図5 sendfileメソッド(DMAギャザー)

sendfile システム コールは、DMA エンジンを使用してファイルの内容をカーネル バッファーにコピーし、ファイルの場所と長さの情報を含むバッファー記述子をソケット バッファーに追加します。このステップでは、カーネル内のデータはソケット バッファーにコピーされません。 DMA エンジンは、最後の CPU コピーを回避して、カーネル バッファー内のデータをプロトコル エンジンにコピーします。

ゼロコピー技術は非常に一般的です。 JAVA の transferTo メソッドと transferFrom メソッドはゼロ コピーです。

[この記事は51CTOコラム「AiChinaTech」、WeChatパブリックアカウント(id:tech-AI)からのオリジナル記事です]

この著者の他の記事を読むにはここをクリックしてください

<<:  マルチクラウド仮想化環境のバックアップコンプライアンス

>>:  エッジコンピューティングは企業のネットワーク需要のバランスをとるのに役立つ

推薦する

企業ウェブサイトの関連性を高めるための一般的な方法

多くの場合、ウェブサイトの関連性がウェブサイトの品質を決定します。私たちが普段接する多くのウェブサイ...

「制御可能」原則を使用して、Webサイトの外部リンクが合理性を取り戻すようにします

多くのウェブサイトの外部リンクは毎日変化しています。外部リンクの安定性は、ウェブサイト全体の重みの不...

ビジネスを台無しにする可能性のあるクラウド コンピューティングの 10 の間違い

小さなミスが企業のクラウド コンピューティング戦略を台無しにしてしまう可能性があることが判明しました...

最も強力な標準はどれですか?Google PRとSogou SRの比較に関する私の意見

長い間、GoogleのPR値は、ウェブマスターが友好的なリンクを交換するための基本的な基準でした。多...

オペレーションディレクターが把握すべき4つの側面

現在、ネットワーク運用はSEOよりも人気があり、より重要なポジションです。著者は、今後SEOが徐々に...

「タオバオ外」の電子商取引代理店事業はJD.comのオープンプラットフォームを後押しする可能性

1月22日、易邦電力網は、タオバオ・天猫プラットフォームの半分を占めるサービスプロバイダーのグループ...

SEO とユーザー エクスペリエンスのどちらがより重要ですか?

SEOキーワードランキングとユーザーエクスペリエンスのどちらが重要でしょうか?この記事はウェブサイト...

UCloudの「グローバル化」レイアウトが再びアップグレードされ、ムンバイノードが正式に開始されました

UCloud ムンバイ データ センターが正式にユーザーに公開されました。 UCloudの25番目の...

ドイツ、フランクフルトでの gcore Basic VM の簡単なレビュー

gcoreの基本VMの2番目のデータセンターはドイツのフランクフルトです。公式サイトでは最低月額料金...

クラウド コンピューティング環境の主な課題を管理し、対処する方法

過去数年間のクラウド コンピューティング サービスへの劇的な移行により、企業はこれまでにない柔軟性と...

ユーザーエクスペリエンスを把握することで、Web サイトのコンバージョン率を完全に逆転させることはできますか?

使用するウェブサイト マーケティング方法に関係なく、目的は同じで、売上を効果的に増やすことです。ウェ...

秋名山の決戦! Huawei Cloud Message Queue DMSがベテランドライバーKafkaと提携

秋名山の上空は一年中霧に包まれており、人が訪れることはめったにありませんが、それでもこの山はレーサー...

pqhostingのドイツデータセンター1Gbps帯域幅無制限トラフィックVPSの簡単なレビュー

pq.hosting を紹介する必要がある主な理由は、同社が 1Gbps の帯域幅と無制限のトラフィ...

共同購入サイトの存続率はわずか18.6%で、残っているのは1,000未満です。

本紙(薛松記者)は、業界全体の規模が拡大を続ける一方で、今年の春節以降、中小共同購入サイトが多数閉鎖...

chicagovps-新しく買収された会社/サイト全体の70%割引プロモーション/VPSは年間3.6ドルから

chicagovps は本日、Electribyte の買収を発表し、買収後にサイト全体で 30% ...