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 が仮想マシンを改革する方法

推薦する

インターネットマーケティング市場: ブランド指向のマーケティングアイデア

インターネットマーケティング市場は本格的に発展しており、ますます多くの企業がインターネットマーケティ...

ウェブマスターネットワークニュース:「紙の重複チェック」タオバオストアの月間収入は100万を超え、明日JD.comに掲載される予定

1. タオバオには「論文盗作チェック」の店舗が500店以上あり、月間売上高は100万元を超えている「...

VPS 初心者向けチュートリアル: 海外の VPS を購入するには?

友人の中には、若くて語彙が足りない人や、面倒で「説明できない」翻訳ソフトウェアを使いたくない人がいる...

ウェブサイトの最適化、どのような外部リンクをウェブサイトの外部リンク最適化戦略に簡単に含めることができるか

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

OPA を使用してマルチクラウド ポリシーとプロセスの移植性を実現する方法

OpenPolicy Agent を使用すると、開発チームはマルチクラウドおよびハイブリッド クラウ...

微博でのMeizuのフラッシュセールから見るファン経済の仕組み

MeizuはWeiboを通じてフラッシュセールを開始し、最初のセールは多くのメディアの注目を集めまし...

「リンク交換の精神」について私の考えを共有させてください

外部リンク構築に関して、誰もがまず思い浮かべるのは友好的なリンク交換だと思います。リンク交換は、外部...

#ニュース: Linode シンガポール VPS がオンライン/テストデータあり

世界的に有名な VPS クラウド プロバイダー Linode のシンガポール データ センターが正式...

【ネットワークが眩しすぎて見れない】: globalfrag-CN2ネットワークのKVM仮想VPSの簡単なレビュー

テスト用に globalfrag.com の CN2 ネットワーク ライン KVM 仮想 VPS を...

何をすべきか?Baidu入札における悪質なクリックへの対処方法

有料入札はクリック数に基づいて課金され、クリックがなければ料金は発生しないことは誰もが知っています。...

百度の最近の調整による百度のスパイダートラップを回避する方法についての簡単な説明

最近、多くのウェブサイトがスナップショットの更新を停止しています。私が所有する3つのウェブサイトのう...

電子商取引プラットフォームの618アリーナ

毎年恒例の電子商取引イベント618が今年も開催されます。DouyinやKuaishouなどの新しい電...

SEO検索するとなぜチベタン・マスティフが表示されるのでしょうか? SEOとチベタン・マスティフの関係は何ですか?

今日、たまたまSEOを検索して、最新のSEOインデックスについて知りました。鄭州SEO老峰を驚かせた...

360 Search は本当にクリーンで安全、信頼できるのでしょうか?

360 Search はしばらく前からオンラインになっていますが、当初の熱狂的な期待からは徐々に冷め...