カフカ一般的な紹介

カフカ一般的な紹介

背景

 

カフカはもともとScalaの言語を使用して、LinkedInのが開発した、カフカが分散し、パーティション化、マルチコピー、マルチ加入者ロギングシステム(MQ分散型システム)、ウェブ/ nginxのログ、検索ログに使用することができています、監視ログ、アクセスログなど。

 

その上でJavaやPython、C ++、PHPと:カフカは、現在クライアントのさまざまな言語をサポートしています。

 

 

 

カフカ用語集と作品:

 

プロデューサー:ニュースのプロデューサーは、カフカブローカーメッセージクライアントにあります。

消費者:ニュースの消費者は、カフカブローカークライアントにニュースを得ます

トピック:メッセージのトピック。

コンシューマ・グループ(CG):これはカフカがブロードキャスト(すべての消費者に送信された)メッセージとユニキャストを実装するために使用トピックである(すべての消費者が発行した)を意味します。トピックは、CGを複数有していてもよいです。CGで消費者にCGの全てのメッセージのコピーのトピック(ない真のコピー、概念的である)が、それぞれの意志だけCGメッセージ。あなたがいる限り、各消費者がその上に独立したCGを持っているとして、放送をしたい場合。同じCGでのユニキャスト、消費者のすべての限り達成するために。消費者は、異なるトピックに複数回送信されるCGメッセージなしに自由にすることによってグループ化することができます。

ブローカー:カフカサーバーがブローカーです。ブローカーの複数からなるクラスタ。ブローカーはトピックを複数受け取ることができます。

パーティションは:スケーラビリティを達成するために、非常に大きなトピックは複数のブローカー(すなわち、サーバ)に分配されてもよい、トピックはパーティションに分割することができ、各パーティションは、順序付けられたキューです。パーティションは、各メッセージは、逐次、ID(オフセット)が割り当てられます。カフカ消費者へのメッセージで唯一のパーティションは、全体のトピックシーケンス(間のパーティション)を保証するものではないことを確実にするため。

 オフセット:利点を見つけるのは簡単ですオフセットの名前をどうするoffset.kafkaに応じカフカ保存されたファイルに名前が付けられます。たとえば、あなただけのファイルの2048.kafkaを見つけ、2049年に場所を見つけたいです。もちろん、最初のオフセット00000000000.kafkaです

 

カフカの特性:(提案より抽象的なを書く再修正の後ろ)

OによってL(1)ディスクのデータ構造は、メッセージの保存安定性のためのTBの数が長く維持することができる場合でも、この構成では、メッセージの永続性を提供します。

lのハイスループット:でも、ごく普通のハードウェアカフカも秒あたりのメッセージ数十万人をサポートすることができます。

Lサポート同期および非同期複製HAの二種類

システムコールのsendfile、ゼロコピー、プルアップデータ量を用いてリットル消費者クライアントプル、ランダム読み取り、

クライアントに保存されているリットル消費状態

lの書き込みメッセージの格納順序

L個のデータ移行、ユーザーに対して透過的膨張

LのHadoopは、並列データローディングをサポートします。

Lサポート、オンラインとオフラインのシナリオ。

リットルの永続性:永続ハードディスクの複製にデータやデータの損失を防ぎます。

lはスケールアウト:マシンの展開をダウンタイムなし。

lは定期的に保持時間を設定し、セグメントファイルパーティションをサポートするためのメカニズムを削除します。

 

信頼性(一貫性)

カフカ(MQ)は、生産者と消費者への分配の間に信頼性の高いメッセージ転送を達成します。伝統的なMQシステムは、典型的には、ブローカに記憶されている消費者と実装(ACK)機構、分布およびステータスメッセージとの間のブローカによって確認されます。

 

たとえそうであっても一貫性(元を参照)を確保することは困難です。カフカのアプローチは、消費者自身、また任意の確認により、状態を保存することです。この消費者の負担がさらに重くますが、実際にはより柔軟です。

 

かかわらず、メッセージを再処理する必要が消費者の結果にどのような理由の、あなたは再びブローカーから入手することができますので。

 

kafakのシステム拡張

ダイナミッククラスタの拡張を使用するには、カフカの飼育係は、クライアント(生産者と消費者)の設定を変更する必要はありません。ブローカは、飼育係に登録し、更新の関連メタデータ(トピック、パーティション情報など)を維持します。

 

そして、クライアントは、飼育係に関連するウォッチャを登録します。飼育係が変化すると、クライアントは、速やかに認識し、それに応じて調整することができます。これは、自動負荷分散の中で、まだブローカー、ブローカーを追加または削除するときにことを保証します。

 

カフカの設計目標

ハイスループットは、そのコア設計の一つです。

 

ディスクデータの永続性:メッセージは、ディスクに直接書き込むシーケンシャルリードをフルに活用し、ディスクのパフォーマンスを書くために、メモリキャッシュではありません。

リットルゼロコピー:IO削減段階。

Lサポートバルクデータ伝送と引っ張ります。

Lサポートデータ圧縮。

Lトピックがパーティションに分割され、並列処理能力が向上します。

プロデューサーの負荷分散とHAのメカニズム

ユーザによって指定されたプロデューサアルゴリズムは、指定されたパーティションにメッセージを送信します。

複数のpartiitonは、各パーティションは、それ自身の複製、異なるノードブローカにわたって分散各レプリカを有しています。

パーティションを複数選択すると、リードパーティションがフェイルオーバーの責任飼育係による読み取りと書き込みを担当し、リードパーティションが必要です。

動的飼育係管理ブローカーと消費者との休暇を加えることで。

消費者のプル機構

そのため、永続データの意志カフカブローカー、無加圧cahceブローカー、したがって、消費者の消費データは以下のように特に具体的なプルを取るために、より適切な方法:

 

カフカは、設計を簡素化する困難さを軽減します。

消費者の消費者の独立した制御メッセージ引き上げ速度の性能。

消費者は、彼らの消費、バッチなどのパターン、繰り返し消費に応じて選択したパーティションまたはその上の位置(オフセット)との開発から支出を開始します。

消費者と話題の関係とメカニズム

トピックカフカは、本質的に、各コンシューマ・グループの消費者の一部のみをサポート;.逆に、各グループは、特定のトピックのメッセージに対する消費者の複数を有していてもよいです。

各消費者は唯一のコンシューマ・グループは、このトピックに登録され、このメッセージは、より多くの消費者のグループに送信されることはありません。そして、すべての個人消費のグループは、トピック全体ずらしされます。

すべてが同じコンシューマ・グループ、JMSキュー、およびパターンのように、このような状況を持っている場合は、メッセージが消費者の間で負荷分散されます。

すべての消費者は、これが「パブリッシュ - サブスクライブ」であることを、別のグループを持っている場合、メッセージはすべての消費者に放送されます。

 

 

 

カフカでは、メッセージのパーティションにのみコンシューマ・グループ(同じ時間)の消費者になります。お互いの消費者のニュース消費独立した内の各グループ。我々はグループが誰「サブスクリプション」であると言うことができます

 

トピック各partionsは、消費者は、消費者「加入者」になりますが、消費者は、同時にメッセージに複数のパーティションを消費することができます。

 

メッセージのパーティションが、消費者が消費者の順であるときカフカにのみ保証されます。実際には、ビューのトピックの観点から、複数のパーティションがある場合、メッセージは依然として世界的な順序です。

 

 

 

メッセージの並行処理の購買力のトピックを向上させることができますが、また、「フォールトトレラント」な性質を改善するだけでなくので、一般的に、消費者のグループは、より多く含まれています、コンシューマ・グループの故障であれば、

 

そして、消費者は、他の消費者が自動的にトピックを.kafka決定を引き継ぎ、同じグループは、個人消費のパーティションの数、同時により多くを持つことができないパーティションの設計原理を持つことになり、

 

それ以外の場合は、一部の消費者がメッセージを取得しないことを意味します。

 

プロデューサーバランシングアルゴリズム

どれブローカーカフカクラスタは、メタデータは、プロデューサに情報を提供することができ、「クラスタリスト内のサーバの生存」/「パーティションリーダーリスト」でこれらのメタデータ

そして、他の生産者の自信、そしてプロデューサーは、すべてのトピックパーティションのリーダーは、ソケット接続を保持しますときメタデータを取得し(ノード情報で飼育係を参照します);

直接ではなく、任意の中間「ルーティング層。」実際には、メッセージをパーティションにルーティングされたを通してブローカソケットにプロデューサによって送信されたメッセージは、クライアントがプロデューサを決定しました。

トピックが複数のパーティションに存在する場合、次いで、「バランスのとれたメッセージ配布」を達成するために、生産者側が必要であり、そのような「ランダム」「キーハッシュ」「ポーリング」として用いる等してもよいです。

プロファイルの生産者側では、開発者は、パーティションのルーティング方法を指定することができます。

 

消費者バランシングアルゴリズム

グループは、消費者がバランスのパーティションをトリガーする、参加するか、残しがある場合。バランスの取れた究極の目標は、話題の同時摂取の能力を強化することです。

1)topic1場合、次のパーティションを有する:P0、P1、P2、P3

C0、C1:2)、次の消費者グループを追加しました

3)インデックス番号をソートするパーティションの最初のパーティション:P0、P1、P2、P3

4)consumer.idソート:C0、C1

5)倍数を計算する:M = [P0、P1、P2、P3] .size / [C0、C1] .size、本実施形態の値M = 2(切り上げ)

6)次に、パーティションを割り振る:C0 = [P0、P1]を、C1 = [P2、P3]、すなわちCI = [P(iはMを*)、P((I + 1)* M -1)]

 

内側カフカブローカクラスタブローカとの間の複製機構

カフカにおいて、複製戦略はトピック代わりパーティション、に基づいて、パーティション・サーバーの複数のにカフカコピーデータ、パーティションの複数の任意のリーダーとフォロワー(できない)を有しています。

 

番号は読み書きブローカ構成ファイル、フォロワーとリーダーによってすべての要求は、「消費者」として.Followerを同期させる必要がある.leaderバックアッププロセスを設定することができ、

 

消費者情報とローカルログに保存されている;「後方」、すべてのフォロワー状態を追跡するための責任のリーダー、フォロワーであればあまりまたは失敗し、リーダーのレプリカは、同期リストから削除されます。

 

すべてのフォロワーが成功メッセージが保存されます場合は、このメッセージは唯一の「コミット」であると考えられた、そして消費者は、この時点でそれを消費することができ、この同期戦略は、フォロワーとリーダーの間の良好なネットワーク環境を持っている必要がありますが必要です。

 

生き残るためのレプリカのインスタンスが1つしかない場合でも、あなたはまだ限りのZooKeeperクラスタは生き残ることができるよう、通常の送信を保証し、メッセージを受け取ることができます(注:他の分散ストレージとは異なり、HBaseのは「大多数の」生存ジョブに必要など)。

 

 

カフカ機能モジュールの現在の理解によれば、学習を容易にし、使用するために、組成物は、以下のカフカモジュールに大別され、着信メッセージ処理モジュールに基づいて、順次導入続きます

 

 

 

 

 

 

 

参考ます。https://blog.csdn.net/lizhitao/article/details/23743821

 

おすすめ

転載: www.cnblogs.com/zhy-heaven/p/10993876.html