カフカシリーズ1:カフカの概要

カフカシリーズ1:カフカの概要

カフカは、現在の分散メッセージングミドルウェアシステムの一つは、最も人気のある、その高スループット設計のおかげで、開発者は、収集システムおよびメッセージングシステムをログシナリオでのお気に入りを獲得しています。カフカに関連する知識のいくつかについて話をBenpian。次のものがあります。

アーキテクチャの導入カフカカフカカフカカフカの基本的な概念の特徴

カフカのコアコンセプトパーティションパーティションレプリケートReplicationメッセージコンシューマ・グループの消費をオフセット

カフカのエンジニアリングアプリケーション

カフカについて

カフカの特長

カフカはもともと配布され、LinkedInのが開発した、マルチコピーパーティション、およびより多くの加入者、分散ログベースのシステム(また、MQシステムとして使用することができます)の飼育係の調整、一般的なWeb / nginxのログ、アクセスに使用することができますログ、ニュースサービスなどは、Apache財団に2010年の貢献をLinkedInにトップオープンソースプロジェクトになります。他のミドルウェアメッセージキュー、カフカの主要な設計目標、すなわち、以下の機能と比較すると:

時間計算量はO(1)一定の時間を確保することができてもTBのデータアクセス性能のレベルを超えて、メッセージの永続性を提供しています。

ハイスループット。でも、非常に安価なスタンドアローンでIBMは、毎秒100Kのメッセージの送信をサポートするために行うことができます。

各パーティション内のメッセージの連続送信を確保しながら、サーバ、および分散型消費のカフカのニュースのパーティションをサポートしています。

オフラインデータ処理やリアルタイムデータ処理のための同じ時間サポートで。

スケールアウト:サポート、オンライン展開のレベルを

カフカの基本的な概念

ブローカ

1つ以上のサーバーのカカクラスタは、ブローカーと呼ばれます。ブローカートピックは、データを保存します。

Nは、トピックのパーティションがある場合は、N個のクラスタがブローカーを持って、各ブローカは、トピックのパーティションに保存されています。

トピックは、N個のパーティションがある場合、トピックのパーティションを仲介Nを格納するクラスタ(N + M)番目のブローカーがある、残りのパーティションはMブローカーはトピックのデータを格納しません。

Nパーティションのトピックがある場合、以下Nよりブローカクラスタ番号、トピックまたはパーティションを複数記憶ブローカー。実際の生産環境では、起きてからこれを回避しようと、このような状況は、カフカのクラスタデータにバランスされていないリードする可能性があります。

トピック

各メッセージに公開カフカは、カテゴリは論理的な概念である持っています。

一つ以上のブローカに保存されているがメッセージのトピック異なる物理的に別個のストレージは、メッセージは、論理的トピックであるが、ユーザの必要性は、データが中に保存されている場所を気にすることなく生産又は消費データにメッセージトピックを指定します

パーティション

トピック物理パーティションは、パーティショントピック、少なくとも1つのパーティションに分割することができます。

ファイルストレージを複数用いて各データセグメントのためのパーティションは、各パーティションが順序付きキューである、異なるパーティション間でデータが乱れています。

パーティション各メッセージは、シーケンシャルID(すなわち、オフセット)が割り当てられます。

プロデューサー

そして、メッセージデータプロデューサー。カフカのトピックにパブリッシュプロデューサーメッセージ。

ブローカは、公開されたメッセージ・プロデューサは、追加データの現在のセグメント内のファイルに追加ブローカメッセージを受信した後。

プロデューサ送信されたメッセージをパーティションに格納され、プロデューサ格納されたデータはまた、パーティションを指定することができます。

消費者

消費者のニュースやデータ。消費者のデータは、ブローカーから読み取ります。

複数のトピックがあるから、消費者は、データを消費することができます。

コンシューマ・グループ

すべての消費者は、特定のコンシューマ・グループに属しています。

グループ名は、デフォルトのグループに指定されている場合、グループ名は、それぞれの消費者のために指定することができます。

Aトピックが複数の消費者団体を持つことができ、メッセージのトピックは、すべてのコンシューマ・グループにコピーされますが、消費者の各グループは、グループのみ、消費者にメッセージを送信します。

消費者団体は、カフカ放送やメッセージのトピックのユニキャストを達成するために使用される手段です。

盟主

リーダーとして一つだけがあり、複数部数の各々を仕切ります。

パーティションのリーダーが読んで、現在のデータの書き込みを担当しています。

フォロワー

フォロワーがリーダーを次の、すべての書き込み要求がリーダーを介してルーティングされる、データの変更は、データの同期を維持するすべてのフォロワー、リーダーとフォロワーに放送されます。

リーダーが失敗した場合は、フォロワーから新しいリーダーを選出。

フォロワーとリーダーがハングアップした場合、スタックやスローシンクロ、リーダーが「同期レプリカで」分散メッセージコンポーネントカフカからこのフォロワーを置く##の高スループットは、それがどのように動作するかです

カフカは、現在の分散メッセージングミドルウェアシステムの一つは、最も人気のある、その高スループット設計のおかげで、開発者は、収集システムおよびメッセージングシステムをログシナリオでのお気に入りを獲得しています。カフカに関連する知識のいくつかについて話をBenpian。次のものがあります。

アーキテクチャの導入カフカカフカカフカカフカの基本的な概念の特徴

カフカのコアコンセプトパーティションパーティションレプリケートReplicationメッセージコンシューマ・グループの消費をオフセット

カフカのエンジニアリングアプリケーション

カフカについて

カフカの特長

カフカはもともと配布され、LinkedInのが開発した、マルチコピーパーティション、およびより多くの加入者、分散ログベースのシステム(また、MQシステムとして使用することができます)の飼育係の調整、一般的なWeb / nginxのログ、アクセスに使用することができますログ、ニュースサービスなどは、Apache財団に2010年の貢献をLinkedInにトップオープンソースプロジェクトになります。他のミドルウェアメッセージキュー、カフカの主要な設計目標、すなわち、以下の機能と比較すると:

時間計算量はO(1)一定の時間を確保することができてもTBのデータアクセス性能のレベルを超えて、メッセージの永続性を提供しています。

ハイスループット。でも、非常に安価なスタンドアローンでIBMは、毎秒100Kのメッセージの送信をサポートするために行うことができます。

各パーティション内のメッセージの連続送信を確保しながら、サーバ、および分散型消費のカフカのニュースのパーティションをサポートしています。

オフラインデータ処理やリアルタイムデータ処理のための同じ時間サポートで。

スケールアウト:サポート、オンライン展開のレベルを

カフカの基本的な概念

ブローカ

1つ以上のサーバーのカカクラスタは、ブローカーと呼ばれます。ブローカートピックは、データを保存します。

Nは、トピックのパーティションがある場合は、N個のクラスタがブローカーを持って、各ブローカは、トピックのパーティションに保存されています。

トピックは、N個のパーティションがある場合、トピックのパーティションを仲介Nを格納するクラスタ(N + M)番目のブローカーがある、残りのパーティションはMブローカーはトピックのデータを格納しません。

Nパーティションのトピックがある場合、以下Nよりブローカクラスタ番号、トピックまたはパーティションを複数記憶ブローカー。実際の生産環境では、起きてからこれを回避しようと、このような状況は、カフカのクラスタデータにバランスされていないリードする可能性があります。

トピック

各メッセージに公開カフカは、カテゴリは論理的な概念である持っています。

一つ以上のブローカに保存されているがメッセージのトピック異なる物理的に別個のストレージは、メッセージは、論理的トピックであるが、ユーザの必要性は、データが中に保存されている場所を気にすることなく生産又は消費データにメッセージトピックを指定します

パーティション

トピック物理パーティションは、パーティショントピック、少なくとも1つのパーティションに分割することができます。

ファイルストレージを複数用いて各データセグメントのためのパーティションは、各パーティションが順序付きキューである、異なるパーティション間でデータが乱れています。

パーティション各メッセージは、シーケンシャルID(すなわち、オフセット)が割り当てられます。

プロデューサー

そして、メッセージデータプロデューサー。カフカのトピックにパブリッシュプロデューサーメッセージ。

ブローカは、公開されたメッセージ・プロデューサは、追加データの現在のセグメント内のファイルに追加ブローカメッセージを受信した後。

プロデューサ送信されたメッセージをパーティションに格納され、プロデューサ格納されたデータはまた、パーティションを指定することができます。

消費者

消費者のニュースやデータ。消費者のデータは、ブローカーから読み取ります。

複数のトピックがあるから、消費者は、データを消費することができます。

コンシューマ・グループ

すべての消費者は、特定のコンシューマ・グループに属しています。

グループ名は、デフォルトのグループに指定されている場合、グループ名は、それぞれの消費者のために指定することができます。

Aトピックが複数の消費者団体を持つことができ、メッセージのトピックは、すべてのコンシューマ・グループにコピーされますが、消費者の各グループは、グループのみ、消費者にメッセージを送信します。

消費者団体は、カフカ放送やメッセージのトピックのユニキャストを達成するために使用される手段です。

盟主

リーダーとして一つだけがあり、複数部数の各々を仕切ります。

パーティションのリーダーが読んで、現在のデータの書き込みを担当しています。

フォロワー

フォロワーがリーダーを次の、すべての書き込み要求がリーダーを介してルーティングされる、データの変更は、データの同期を維持するすべてのフォロワー、リーダーとフォロワーに放送されます。

リーダーが失敗した場合は、フォロワーから新しいリーダーを選出。

フォロワーとリーダーがハングアップした場合は、リスト、フォロワーを再作成する「同期がレプリカに」、スタックやスローシンクロ、リーダーがフォロワーから削除されます。

カフカアーキテクチャ

下に示すように、カフカは、一般的に、クラスタ構成、典型的カフカクラスタアーキテクチャに配備され:

カフカの中核となる概念

パーティションパーティション

パーティションのいくつかの機能

カフカは、メモリセルの基本的なパーティションであり、別のパーティションは、物理パーティションのフォルダに対応する、別のサーバー・ノード上に配置することができる、トピックパーティション内の1つ以上が存在することになります。

一つ以上が含まれているセグメントを分割し、順番に各セグメントは、データファイルとそれに対応するインデックスファイルが含まれています。

書き込み操作の場合、セグメントは、パーティションに書き込むたびに、読み出し動作のために、読み出し順序が同じセグメントパーティション内で異なるであろう。

それは非常に長いパーティションアレイとすることができるように論理的に、データアレイにアクセスするには、このインデックスを使用して(オフセット)。

これは、これらの点において具体カフカ設計スループット高く、設計の高スループット分割方法の一つです。

以来、別のパーティションは、異なるマシン上に配置することができるので、並列処理が機械間で達成することができます。

また、同じサーバ上に配置されたパーティションの複数に対応するフォルダは、あなたが異なるディスク、ディスク間に並列処理に対応し、同じサーバー上の異なるパーティションを作ることができるので、パーティション。

パーティションの数を増やすことによって、システムのスループットを増大させるために一般的に平行であるが、若干の遅延を増加させます。

しかし、状況のこれらのタイプは、次のように注意を払う必要があります。

トピックは、複数の消費者が存在する場合、メッセージは、消費者の消費の消費者群であろう。

メッセージは、パーティション単位で割り当てられているので、パーティションのデータのみを消費者に消費されると、場合パーティションよりも消費者の数は、それが一部の消費者の存在を消費しないように場合、リバランスを考慮しません状況のトピックは、消費者を増やすために、この時間は、システムのスループットを向上しません。

プロデューサーやブローカーの視点は、異なるパーティションの書き込みは、完全に平行であるが、消費者のために、それはの同時パーティションの数に依存します。システム設計の計算されたスループットに応じて設定されるべき実際の数のニーズを仕切ります。

コピー

飼育係のクラスタメンバを使用して情報を保持するために、原則としてカフカをコピーし、各ブローカインスタンスが起動時に一時的なノードの飼育係の道を作成することで、登録するために、独自の一意の識別を一意の識別子、ブローカーが設定され、他でカフカブローカが参加又は離脱するクラスタが存在する場合に内部/ブローカー/ IDS路飼育係コンポーネントモニタは、そう、他のコンポーネントが通知されます。クラスタ間のデータ複製は、カフカに飼育係のデータ・レプリケーション・スキームによって選挙を提供するリーディングカンパニーです。基本的な原理は次のとおりです。最初に他のコピーフォロワとして、指導者を選出、すべての書き込みは、まずリーダーフォロワーに、その後、指導者にメッセージを送っています。個々のノードが利用できない場合、それはまた、全体としてカフカの可用性を確保することができるので、複製は、カフカのコアアーキテクチャの一つです。コピー操作でカフカは、パーティションに対してです。そこパーティションの複数のコピーが、あるブローカーに保存されているコピーし、各ブローカーは異なるパーティションに属している何千ものトピックを保存してコピーすることができます。コピーの2種類があります。

リーダーのコピー:各パーティションは、すべての生産者と消費者を要求する必要がありますがリーダーとなっているでしょう。

レプリカフォロワー:クライアント要求を処理していない、それはリーダーからコピーされたメッセージデータ、および独自のと整合性のある状態のリーダーの責任です。

リーダーノードがダウンした場合、それがフォロワーのリーダーに選出されたサービスを提供していきます。

複製因子:パーティションのいくつかのコピーがあります。

ウェイメッセージング

ビューのプロデューサーの観点から、メッセージは3通りの方法でブローカーに送信されます。

今すぐ送信:送信メッセージは、送信されたメッセージの結果を気にしないでください。本質的に非同期伝送モードで、バッファに格納された最初のメッセージは、バッチが送信条件を設定した後に達しました。もちろん、これは生産者がサーバからの応答を待つ必要がないように、方法カフカ最高のスループット、およびフィッティングパラメータのACK = 0であり、ネットワークはメッセージの最大伝送速度をサポートすることができます。メッセージのための任意の治療をしなかった送信に失敗したので、しかしニュースは、道の最も信頼性の高い種類のものです。

同期伝送:プロデューサーは、送信がオブジェクトの結果に基づいて、成功したかどうかを確認するためにメッセージを送信した後に返された今後のオブジェクトを取得します。サービスメッセージが順に送信されなければならない必要とする場合は、max_in_flight_requests_per_connection = 1に設けられた送信試行が失敗した試行は、閉鎖生産を制御することができるようにパラメータ値を結合、同期方法を使用して、唯一のpartationできサーバーへの正午前にのみメッセージがそのように制御メッセージ送信シーケンスことを、正常に送信された直後に一つのメッセージ、フラッシュを送信する必要があります。

非同期伝送:プロデューサーは、サーバーの応答カフカを受信プロデューサーにパラメータとして渡された登録済みのコールバック関数にメッセージを送信するときに、コールバック関数の実行をトリガします。ビジネスニーズのメッセージが正常に送信されているかどうかを知るために、メッセージの順序を気にしない場合は、パラメータの再試行= 0で、メッセージを送信するために非同期コールバック+の方法を使用して、ログファイルにメッセージ失敗したレコードを送信することができます。

確認メッセージ

ブローカー、カフカへの配信メッセージは、三つのモードがあることを確認した後にどのように成功した数:

Brokerの配信確認に至るまでは成功したと考えられています。

リーダーが正常に配信を確認するために、

リーダーとフォロワーのすべてが唯一成功したと見なさ確認しています。

3つのモードの比較では、その後、順次パフォーマンスを低下したが、今度は、信頼性を向上させます。

メッセージの再送信メカニズム

ブローカーから受信した回復可能な一時的な異常で、メッセージは、生産、再送信の再試行回数の制限値は、属性は生産者によって初期化決定オブジェクトを再ブローカー、生産者が再試行をデフォルトになりますでしょう100msのを待って、あなたはretry.backoff.msプロパティで変更することができます。

一括送信

複数のメッセージが同じパーティションに送信する場合は、カフカのバッチ概念スループット高めるために、バッチで同じプロデューサーに入れ、だけでなく、遅延が増加します。バッチの制御は、メーカーを構築したオブジェクトには主に2つの属性によって達成されます。

batch.size:送信された各パーティションのメッセージバッファの数がこの値に達すると、それはネットワークへの要求をトリガするには、バッチ内のすべてのメッセージが送信されます。

linger.ms:キャッシュ内の各メッセージの最大時間、この時間制限を超えるが、すぐにクライアント・メッセージで送信され、batch.sizeを無視される場合。

コンシューマ・グループ

カフカ・コンシューマ・グループは、消費者の複数を有することができ、それらは一意の識別子、すなわち、パケットのIDを共有する消費者グループに、スケーラブルであり、フォールトトレランス機構消費を提供します。自分の加入したスレッドの下のニュース消費のすべてのパーティションの調整のすべての消費者団体が、パーティションは、同じコンシューマ・グループで、消費者が消費することができます。

ブロードキャストおよびユニキャスト

Aトピックが複数の消費者団体を持つことができ、メッセージのトピックは、すべてのコンシューマ・グループにコピーされますが、消費者の各グループは、特定の消費者の消費者グループにメッセージを送信します。あなたが放送を実現したい場合は、単に各消費者が割り当てられている消費者は、ユニキャストとして達成したいならば、あなたはすべての消費者を置く必要があるとのインタフェースの別のセットは、同じコンシューマ・グループに設定されています

リバランス

消費者団体は、参加や消費者を残すための新しい消費者があり、パーティションの所有権は、コンシューマ・グループ内のすべての消費者が下の割り当てのトピックに同意したか、別の消費者の再バランシングプロトコルの定義に1人の消費者から転送されます各パーティションのトリガーリバランス、3つのシナリオがあります。

まず、消費者のグループメンバーシップの変更で

第二に、サブスクリプションの数は、より多くのテーブルのテーマが起こります

3つのパーティションの数が変更され、トピックにサブスクライブされ

消費オフセット

カフカは、メッセージは、各パーティションのオフセットが含まれ、消費者は、各パーティションのオフセットで、このトピックにメッセージを送信するメッセージ、消費者それぞれの時間を節約するために_consumer_offsetと呼ばれる特別なテーマを持っています。消費者が運営されている場合は、何の効果を相殺しない。消費者がクラッシュしたり、新たな消費者がトリガーリバランス操作に消費者団体に参加する場合は、後の消費者のパーティションが再バランスがその前にいない場合は、一部の提出シフト量は便利です。メンテナンスメッセージが欠落しているメッセージを回避するためにオフセット以下のオフセット異なる方法により提出され、ExactlyOnce不可欠なメッセージを確実にするために、消費と消費を繰り返しています。

オートコミット:カフカは、定期的に、自動的にデフォルトのオフセットを提出し、デフォルトの時間間隔は5秒を提出しています。この方法では、繰り返し処理メッセージの問題が発生します。

マニュアルの提出:消費者はcommitSyncの方法をオフセット提出し、その後自動設定がマニュアルの提出に先立って提出されたターン、とする必要があります。その記録コールcommitSync法を確保するために開発者によって処理した後に、反復プロセスはメッセージの数を減らすことが、消費者のスループットを減少させることができます。

非同期送信:使用commitASync方法は、オフセット、最終的に提出します。消費者は単に応答すぐにブローカーを待つ必要なしに、送信要求を送信してください。

カフカのエンジニアリングアプリケーション

カフカは、主に3つのシナリオのために使用されます。

カフカのユーザー行動データの収集に基づいて、

カフカのログ収集に基づいて、

カフカをクリッピングの流れに基づいて、

カフカのユーザー行動データの収集に基づいて、

ユーザーの行動を分析し、いくつかのステップを必要とするために必要なデータを取得するには:

フロントデータ(埋設)が報告されました

受信機フロントエンドのデータ要求

必要に応じて、落下のためのカフカの消費者のニュースを通じて戻ります、

ユーザーの行動の分析

カフカのログ収集に基づいて、

出力データ・バッファ、統一カフカにログ出力としてプラットフォームスループットカフカを高くログインし、カフカを介して、消費者の様々なサービスへの統一されたインタフェースへの道を開いたときに様々なアプリケーションシステムが利用します。統一されたプラットフォームは、カフカが集中し、重要なシステムログを収集するために、ロギングプログラムを行い、その後、消費者ElasticSearchをインポートするには、HDFS、嵐、リアルタイム検索、分析、オフライン統計の他の特定のログデータ、データのバックアップ、大規模なデータ解析ように。

カフカをクリッピングの流れに基づいて、

システムのために大容量のシナリオではまだ使用可能である、あなたは、高トラフィックによって引き起こされる問題を避けるために、システムの主要なビジネス分野でのバッファのメッセージキューのメッセージの流れとして参加することができ、短時間で生成されたアプリケーション全体を圧倒しました。

发布了78 篇原创文章 · 获赞 9 · 访问量 6191

おすすめ

転載: blog.csdn.net/WANXT1024/article/details/104401718