あらゆるインターネット企業が利用する Kafka がなぜ高速なのか?

あらゆるインターネット企業が利用する Kafka がなぜ高速なのか?

データが王様である時代において、膨大なデータの保存、伝送、分析は特に重要になっています。データの保存は、Clickhouse や Hbase などの大規模なデータベースによって行われます。データ分析は通常、Clickhouse または Hbase の特性を利用してデータをディメンションに分割することによって行われます。データ転送に関しては、誰もがKafkaを使用します。高い同時実行性、高いパフォーマンス、高速性はKafka の代名詞となっています。

[[346030]]

Kafka + clickhouse + zookeeper はビッグ データ分析および処理業界では 3 点セットになっていますが、今日は Kafka についてのみ説明します。皆さんがご存知の Alibaba、Baidu、Tencent、Toutiao、Meituan、Didi などの一流大企業はすべて Kafka 上で二次開発を行っており、統合ビジネスはその能力を拡大しています。あなたの知らないインターネット企業も、ビジネス処理を支援するために Kafka のネイティブ機能を活用しています。では、なぜ Kafka はこんなに高速なのでしょうか?今日はそれについて話しましょう。

1点目は、並列処理にパーティションを使用するKafkaの特徴です。パブリッシュ/サブスクライブ システムである Kafka の最小の動作単位はトピック メッセージであり、各トピックは複数のパーティションに分割できます。通常、異なるパーティションは異なるマシンに配置されており、クラスターを利用することで、マシン間の並列処理を実現できます。また、1 つのパーティションはマシン上の 1 つのフォルダーに対応するため、同じマシン ノードに複数のパーティションがある場合でも、同じマシン ノードのパーティションを異なるディスクに配置するように構成して、ディスク間の並列処理を実現し、速度を向上させることができます。

2 番目のポイントは、ディスクへの順次書き込みです。 Kafka データはディスクに保存されることがわかっています。ディスクがデータを読み取るのにかかる時間は、主にシーク時間 (トラックを正しく見つける)、回転遅延 (読み取り/書き込みヘッドの回転)、およびデータ転送時間で構成されます。ディスクがデータを順番に読み書きする場合、ヘッドは正しいトラックが見つかる限り連続的に回転してデータを取得できます。ディスクがデータをランダムに読み書きする場合、最悪の場合、各データが異なるトラック上にあるため、そのたびにヘッドをシークして回転させる必要があり、非常に時間がかかり、パフォーマンスが低下します。 Kafka では、各パーティション内のデータは順序付けられた不変のメッセージ キューです。新しいメッセージがパーティションに到着すると、末尾に追加されます。順次書き込み方式により速度が向上します。データを削除する場合は、パーティションを複数のセグメントに分割し、セグメントを直接削除します。これも非常に高速です。

3 番目のポイントは、ページキャッシュを使用することです。 Kafka は一般的に Linux システムにインストールされていることがわかっています。 Linux システムの設計では、ディスク アクセスのパフォーマンスを向上させるために、ファイル キャッシュはページ キャッシュとバッファ キャッシュの 2 つの部分に分割されています。ページキャッシュ モジュールは、プロセスによるファイルの読み取りと書き込みをサポートするためにファイル システム データをキャッシュし、バッファキャッシュは、システムによるブロック デバイスの読み取りと書き込みをサポートするためにブロック データをキャッシュします。 Kafka では、サーバー ノード ブローカーがデータを受信した後、ディスクへの書き込み時にデータをページキャッシュに書き込み、連続した小さなブロックを物理的な書き込みの大きなブロックに組み立ててパフォーマンスを向上させます。ディスクデータを読み取る際、物理ディスクから取得するのではなくページキャッシュから読み取るため、速度が向上します。

4つ目のポイントは、Kafkaのゼロコピーメカニズムです。オペレーティング システムの中核はカーネルであることはご存じのとおりです。ユーザーがカーネルを直接操作することを防ぐために、オペレーティング システムは通常、カーネルをカーネル空間とユーザー空間の 2 つの部分に分割します。 Linux システムでは、データの読み取り操作はすべてデータのコピーに基づいて完了します。つまり、データはカーネル アドレス空間のバッファーとユーザー アドレス空間のバッファー間でコピーされます。通常のデータ読み取りプロセスには、一般的に 4 つの部分が含まれます。

1. オペレーティング システムは、まずディスクからカーネル ページ キャッシュにファイルを読み込む必要があります。

2. ユーザー モード アプリケーションは、カーネル モードからユーザー空間キャッシュにデータを読み取ります。カーネル モード リソースは貴重なので、頻繁に解放されます。

3. ユーザー モード アプリケーションは、データをカーネル空間に書き戻してソケット バッファーに格納する必要もあります。

4. 最後に、オペレーティング システムはソケット バッファーからネットワーク カード インターフェイスにデータをコピーし、ネットワーク経由でコンシューマー プロセスに送信します。

コンシューマーが Kafka メッセージ キュー内のデータを読み取る場合、4 つのデータ コピー プロセスも実行する必要があります。ただし、Kafka にはゼロコピー テクノロジが組み込まれており、ディスク ファイルのデータをページ キャッシュにコピーし、ページ キャッシュからネットワーク上のさまざまなサブスクライバーに直接データを送信するため、コピー操作の繰り返しが回避され、速度が大幅に向上します。

5つ目のポイントはバッチ処理を圧縮することです。 Kafka のプロデューサーがブローカー サーバー ノードにデータを送信すると、複数のメッセージが蓄積され、圧縮されて一緒に送信されます。バッチ処理と圧縮により速度が向上し、ネットワーク帯域幅の利用率も向上します。

この記事の紹介を通じて、Kafka の速さが理解できましたか?日常的な技術開発やビジネスの選択において、Kafka は間違いなく最良の選択です。ゴールデンウィークの9月と10月の面接中に、面接官がどのようなメッセージキューを使用しているか、またはメッセージキューについて何を知っているかを尋ねた場合、これらの知識ポイントを面接官に素早く説明してください。面接官の目が直接輝きます。あなたは最適な候補者かもしれませんよ~頑張ってください!

<<:  危機をチャンスに変える:デジタルの未来 - 第3回デジタルイノベーション&トランスフォーメーションサミットが上海で開催

>>:  エッジコンピューティングを加速させる10のトレンド

推薦する

マルチクラウド: 新しい監視キャッシュ

概要:企業はクラウド プラットフォームを採用しており、多くの場合、特定のアプリケーションを実行するた...

cloudpowerall: ロサンゼルス ユニコム AS9929 ライン VPS の簡単なレビュー

cloudpowerall は、ロサンゼルスの Cera データセンターに、cn2 gia と Ch...

Baidu のモバイル検索で PC ページが除外されたことに対し、医療ウェブサイトはどのように対処すべきでしょうか?

数日前の百度サロンの発表によると、百度はPCウェブページの収録を取りやめる可能性がある。百度は12月...

Docker セキュリティのためのトップ 10 のオープン ソース ツール

[51CTO.com クイック翻訳] コンテナのセキュリティに関しては、Tesla が経験したような...

SEO検索エンジン最適化の定義方法

気がつけば、インターネット SEO 検索エンジン最適化の職に就いて 3 年近くになります。その間、喜...

もう一つの 10 億ドルの教訓: Blog.com の崩壊 (パート 2)

著者プロフィール: 林俊は、CITIC Press および Blue Lion の契約ライターであり...

レッドハットが業界大手と手を組み、VMwareへの攻撃を開始

Red Hat は、RHEV-M プロトコル スタックに基づく仮想化コミュニティ プロジェクトを通じ...

SEO業界は消滅しつつあり、ランキング業界は徐々にマーケティングへと変貌するだろう

SEO 業界は現在非常に人気があります。私が住んでいる蘇州を例にとると、大小合わせて 100 社以上...

匿名の情報源がASOヒマラヤの創設を明かした

匿名の情報源がASOヒマラヤの創設を明かした この記事の著者は匿名であり、この記事は著者の見解のみを...

lunarvps-オランダ VPS/50% オフ/Windows/$3.5/512m メモリ/50g ハードドライブ/2T トラフィック

lunarvpsがホスティング事業を開始した時期は正確には分かりませんが、ドメイン名は2011年に登...

オンラインマーケティングの基本原則の詳細な分析:ユーザーの信頼を獲得する

オンラインマーケティングにはさまざまな形式があり、ソフト記事、ニュースの誇大宣伝、オンラインビデオマ...

Baidu Statisticsを正しく使う方法

Baidu Statistics は、Baidu がリリースした無料のプロフェッショナルなウェブサイ...

IDC: 中国のEA SaaS市場規模は2026年に183.1億米ドルに達する

IDCの最新の「IDC中国エンタープライズアプリケーション管理(EA)SaaS市場2021年下半期追...