Kafka のデータストレージの原則についての理解について話します

Kafka のデータストレージの原則についての理解について話します

5 年間の職務経験を持つ友人が、面接中に次のような質問を受けました。「Kafka データ ストレージの原理についての理解について話してください。」すると、その友人は突然唖然としました。ゼロコピーとは何ですか?ゼロコピーは Kafka と関係がありますか?

そこで今日は、Kafka のゼロコピー原則についての私の理解についてお話ししたいと思います。

1. トピック

Kafka では、メッセージを保存するために使用されるキューはトピックと呼ばれます。これは論理的な概念であり、メッセージのコレクションとして理解できます。

プロデューサーとトピック間、およびトピックとコンシューマー間の関係は多対多です。プロデューサーは複数のトピックにメッセージを送信でき、コンシューマーも複数のトピックからメッセージを取得できます (ただし、これは推奨されません)。

プロデューサーがメッセージを送信するときにトピックが存在しない場合は、Kafka はデフォルトでトピックを自動的に作成します。

2. パーティション

まず、水平拡張を実現するために、Kafka は異なるブローカーに異なるデータを保存します。同時に、単一サーバーのアクセス負荷を軽減するために、トピック内のデータは複数のパーティションに分割されます。サーバーでは、各パーティションに物理ディレクトリがあり、トピック名の後の番号がパーティションを表します。たとえば、mytopic という名前のトピックが作成されると、データ ディレクトリは 3 台のマシンに分散されます。

図に示すように:

mytopic-0 にはノード A、mytopic-1 にはノード B、mytopic-2 にはノード C があります。

3. レプリカ

さらに、Kafa はパーティションの信頼性を向上させるレプリケーション メカニズムを設計しました。トピックを作成するときに、レプリケーション係数を指定してトピックのコピー数を決定します。もちろん、レプリケーション係数はノード数以下である必要があります。そうでない場合はエラーが報告されます。これにより、同じノードにパーティションのコピーが 2 つ分散されることがなくなります。そうしないと、コピー メカニズムがバックアップの意味を失ってしまいます。

図に示すように、3 つのパーティションと 3 つのレプリカを持つトピック a3part3rep が作成され、3 つのブローカー ノードに均等に分散されます。各ブローカー ノードは相互にバックアップします。

これらのレプリカはすべて 2 つの役割に分かれており、リーダーは外部に対して読み取りおよび書き込みサービスを提供します。フォロワーの唯一のタスクは、リーダーから非同期的にデータを取得することです。図の赤いレプリカはリーダーであり、均一な読み取りと書き込みを保証するために各ノードに均等に分散されています。この設計は、モノトニック読み取り一貫性とも呼ばれます。

4. セグメント

ログが継続的に追加されてファイルが大きくなりすぎてメッセージの取得効率が低下するのを防ぐため、Kakfa はパーティションを複数のセグメントに分割して、データが特定のサイズを超えた場合にデータを整理します。ディスク上では、各セグメントはログ ファイルと 2 つのインデックス ファイルで構成されます。

図に示すように、これら 3 つのファイルはセットとして表示されます。このうち、.index は Consumer の Offset オフセットを格納するために使用されるインデックス ファイル、.timeindex はメッセージのタイムスタンプを格納するために使用されるインデックス ファイル、ログ ファイルは特定のデータ ファイルを格納するために使用されます。

カット時に記録されたオフセット値がファイル名として使用されます。ファイル構造は次のとおりです。

5. 索引

先ほど、Kafka では 2 種類のインデックスが設計されていると述べました。 1 つはオフセット インデックス ファイルで、オフセットとログ ファイル内のメッセージの位置とのマッピング関係を記録します。 1 つは、タイムスタンプとオフセットの関係を記録するタイムスタンプ インデックス ファイルです。検索効率を向上させるために、Kafka はメッセージごとにインデックスを作成せず、スパース インデックスを使用します。つまり、メッセージのバッチごとにインデックス レコードが生成されます。図に示すように:

<<:  クラウド移行の3つのビジネスメリット

>>:  Kubernetes が仮想マシンを改革する方法

推薦する

ユーザーエクスペリエンスは時代遅れ、販売感情が重要

昨年、あるパンケーキ店やある牛ブリスケットレストランについて人々が話題にし始めてから、これらのビジネ...

Kafka を使い始める

著者: ninetyhe、Tencent CDG バックエンド開発エンジニア古いものを見直して新しい...

ディディ、今回は本当に失敗するの?

最近、米国でひっそりと上場していた滴滴出行が国家安全法に基づくサイバーセキュリティ審査の対象となり、...

Alibaba Cloud PolarDB がメジャーアップデートをリリースし、従来のデータベースをワンクリックでクラウドに移行可能に

[51CTO.com からのオリジナル記事] データベースのみで移行計画がなく、Oracle との互...

2019年第2四半期モバイルインターネット業界データ調査レポート

Auroraは「2019年第2四半期モバイルインターネット業界データ調査レポート」を発表した。このレ...

hudsonvalleyhost-70% オフ/聖パトリックデーをお祝い/Web ホスティング/VPS/サーバー

HudsonValleyHost (略して HVH) は、聖パトリックデー[注]を祝うためにフルサー...

ユーザーエクスペリエンスとは何ですか?それは、競合他社よりも早く問題点を発見し、迅速に解決することを意味します。

今日は小さな温度計から始めましょう。先週の夜、小規模なO2Oサロンに参加した後、屈強な男性が私を呼び...

データの背後にあるビジネスの秘密を明らかにするOracleのインテリジェント分析ソリューション

インターネット時代において、データの重要性は自明です。 IDCの予測によると、2020年までに世界の...

パブリッククラウド実践における10の成功体験

パブリック クラウド サービスは、コスト削減テクノロジーからビジネスの俊敏性を高めるテクノロジーへと...

U-Mail 電子メール マーケティング: ゴミ箱に捨てられにくい電子メール コンテンツの種類は何ですか?

製品やサービスを宣伝するために大量のメールを送信する過程で、送信したメールの多くがスパム フォルダー...

Unixベンチを実行する際にいくつかの小さな問題が発生する

VPS を購入してマシンのパフォーマンスをテストしたい場合、非常に重要なパラメータ DD に加えて、...

Googleブログ検索ランキングに影響を与える要因

Google ブログ検索は、ブログサイトの構築とプロモーションに非常に重要なツールです。一般的に、ブ...

検索の新時代を迎え、Baidu はより健全な検索エコシステムを構築

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

新浪微博の行動規範が発表される。微博マーケティングは打撃を受けるのか?

新浪微博は、微博コミュニティの秩序を維持し、違反行為を処理するためのオープンで透明なメカニズムを確立...

初志を貫き、再び五家万井(赤峰)情報技術産業パークへ出発

「祖国の北の国境の風景をより美しくしましょう。」事務総長の切実な期待がこの広大な土地の発展の方向性を...