カフカの基本原則の概要

カフカは何ですか?言葉でカフカの公式:

カフカを構築するために使用される リアルタイム・データ・ パイプラインおよびストリーミングアプリケーションを。それは 水平にスケーラブルで フォールトトレラント 邪悪な高速で、かつ数千の企業に生産で実行されます。

一般的に、これはリアルタイムデータ処理システムは、信頼性の高い、だけでなく、高速の異常スケーリングすることができることを意味し、多くの企業で使用されています。

だから、リアルタイムデータ処理システムは何ですか?名前が示すように、リアルタイムデータ処理システムのデータが生成されると、すぐにシステムによって処理オンにする必要があります。

リアルタイムデータ処理のために、私たちの最も一般的であり、メッセージングミドルウェア、およびも呼ばMQ(メッセージキュー、メッセージキュー)とも呼ばれるメッセージブローカです

この記事では、私たちはまた、異常な速い一方で、信頼性の高い、それはスケールをどのように行われるか見カフカの内部構造を知る、ミドルウェアの視点をメッセージングでしょう。

なぜメッセージングミドルウェア

二つのメッセージングミドルウェアの主な役割:

  • 生産と消費は、メッセージをデカップリング。
  • バッファー。

あなたが操作の順序を作成するシナリオを想像し、作成した注文後、それはこのように、ように、統計的なデータのための顧客の注文など、他の操作、一連の起動するユーザーにテキストメッセージを送信、ユーザーにメッセージを送信し、する必要があります:

createOrder(...){
 ...
 statOrderData(...); sendSMS(); sendEmail(); }

書かれたコードは、問題はないようですが、しばらくした後、あなたは、システムのユーザー行動分析サービスの導入を与え、それがユーザーの行動分析を動作させるために、順序が作成された後必要があり、システムの緩やかな成長と、作成します順序の動作がより多くを引き起こし、徐々にこのようなコードに展開されます後。

createOrder(...){
 ...
 statOrderData(...); sendSMS(); sendEmail(); // new operation  statUserBehavior(...); doXXX(...); doYYY(...); // more and more operations  ... }

コードの複数の拡張核心で、その結果、メッセージの生産と消費が一緒に結合されています。createOrderメソッドは、メッセージを「作成されたため」が、また、このメッセージに対処するだけでなく、の生産を担当しています。

レアルマドリードは、チャンピオンズリーグを知っている携帯電話を拾う、レアルマドリードのファンの連絡先を開いて、ファンに一つ一つを与えるために得ることを後にこれは、BBCの記者のようなものです、レアルマドリードが優勝し、呼び出し、それらを教えてください。

実際には、BBCの特派だけにして、ファン自身がニュースの上に取得するには、BBCにアクセスし、彼らの公式ウェブサイト上でこのニュースを公開する必要があり、あるいは、ファンがBBCに加入し、加入システムは、ニュースの公式ウェブサイトで公開するためのイニシアチブを取るのファンにプッシュ。

同様に、createOrderもOKメッセージングミドルウェアの意見に「orderCreated」メッセージのテーマを入れ、注文が作成された後、あるBBCの公式ウェブサイトのキャリアのように、メッセージングミドルウェアのようなものを必要とする、配置する必要性を気にしません誰がメッセージを送りました。これは、メッセージの生産を完了します。

オーダーが作成された後、サービス操作をトリガする必要性については、あなただけの「orderCreated」メッセージのテーマに加入する必要があり、新しい「orderCreated」メッセージは、このメッセージを受信し、適切な治療を行います、メッセージングミドルウェアに表示されます。 。

したがって、メッセージング・ミドルウェアを使用することによって、上記のコードはまた、に帰着します。

createOrder(...){
 ...
 sendOrderCreatedMessage(...); }

行うための新しい必要がある場合はその後、コードのこの文字列は、単にオーダー作成後に加入することによって、メッセージを与える、変更する必要はありません。

また、このようなデカップリングは、消費データの消費者より多くの柔軟性は、常にすぐに対処する必要があるニュースを生成しない、彼女自身の自由することができます(通常は消費者側がバッファ機構スレッドプールなどがあるでしょう)その後、時間、そして、ここでデータを処理するためのメッセージングミドルウェアを取りました。これは、バッファ・メッセージング・ミドルウェアによって引き起こされます。

カフカジェネレーション - メッセージキュー

メッセージは、生産に入れ、消費者やメッセージから削除された - 以上のことから、当社は理由のメッセージングミドルウェアは、メッセージを保存する場所を提供主な理由は、ニュースの生産と消費を切り離すことができていることがわかります処理。

その後、場所は採用すべきかメッセージ、保存するデータ構造、それを?

ほとんどの場合、我々は来てメッセージを送信したい、あなたが扱うことができます(FIFO)、ビジネスロジックのほとんどに沿って、私たちはメッセージいくつかのケースを設定するための優先順位を与えます。いずれにせよ、それは、非常に適切なデータ構造ですメッセージングミドルウェア、FIFOキューのです。

出典:LinkedIn.com

 

どのようにしてメッセージがあり得ることを保証するために、消費者のためにそれ?

過去に消費者がメッセージを乗り越える、毎回データのインデックスは0に戻り、その後、データインデックス= 0の部分を削除しますか?

このニュースには0である可能性が高い消費者の数が加入しているため明らかに、それは1であってもよく、1よりも大きくすることができるではありません。すべての消費者が完全に削除された場合は、他のこのニュースを購読消費者はこのニュース未満を取得します。

実際には、カフカのデータがされる永続的なストレージ(設定可能ですどのくらい用として保存、)、消費者は、レコード終了するオフセットを消費者がデータの消費電流なので、次回は、消費者が望む場所ことを示し、 1 +オフセット位置からだけ消費し続け、過ごすために続けることだけで結構です。

消費者にも再消費データの前に、オフセット値を調整することができます。

そして、これはまだカフカのですか?いいえ、これは非常に一般的なメッセージ・キューだけである、のは、それを呼びましょうカフカの世代になりました。

カフカは、メッセージキューで、この世代のメッセージングミドルウェアを実現し、多くの問題は、この単純な実現があります。

  • トピック同棲「A」消費者がABCDEFG持っている必要がありますよう、まさにこのようなトピックのためのメッセージを探すために内部キューとして話題の多種多様で...トピックをサブスクライブ、想像し、そのパフォーマンスは、それが遅くないですか?
  • 低スループット我々は、すべてのメッセージがキューに入れられ、複数を要求している、それは確かに対処されていません。

したがって、私たちは出てくるカフカII

カフカII - パーティション

二つの問題カフカの生成を解決するために、それは非常に簡単です- ストレージの配布

カフカはII導入パーティション、すなわち複数のキューを使用して、概念を、内部の各メッセージキューは、同じトピックです。

出典:LinkedIn.com

 

パーティションは、上記の二つの問題を解決するために設計されています。

  • 純粋なトピックキューキューは、消費者はもはや自分自身が望んされていない出会いメッセージのトピックを心配する必要はない、唯一のトピックです。
  • スループットを向上させます異なるキューへのメッセージの別のトピックは、もはや敵10がないために、格納します。

キュー唯一のトピック、トピックが、メッセージの一種が、複数のキューに分散したカスタムによると、キー値、。これは、マップのp1とp2、同じトピックがあり、すべてのキューです。しかし、これは比較的高いレベルのアプリケーションで、議論に参加する機会を持っています。

カフカIIまだ十分な完璧な?もちろんそうではない、我々は、パーティションすることで、パフォーマンスを改善したが、我々は非常に重要な問題を見落としが- 高可用性を

場合は、マシンはどのように行うためにハングアップ?シングルポイントシステムは常に信頼できるものではありません。問題のスタンバイノードとデータのバックアップは私たちが考えなければなりません。

カフカ三世代 - ブローカクラスタ

明らかに、可用性の問題を解決するために、我々は必要なクラスタを

クラスタリングのカフカのサポートも非常に友好的です。カフカでは、各インスタンス内のクラスタが呼び出されるブローカーのように、:

出典:sookocheff.com

 

各パーティションは、もはや唯一ではないが、あるリーダー(赤)と、複数のレプリカ(青)のパーティション(例えばP1)後に送信すべきメッセージを決定プロデューサのメッセージ・トピックとキー値に従って、あなたは、対応するパーティションのリーダー(すなわちbroker2 P1)、その後、指導者へのメッセージ、メッセージを書き込む責任リーダー、およびレプリカの残りの部分と同期されています。

パーティションのリーダーは、単にレプリカを促進し、その後、ハングアップしたら、[OK]を、システムがまだ正常に動作することができ、それリーダー作ります。

ブローカクラスタを設計することにより、我々は、システムの可用性の問題を解決していないだけでなく、さらにレプリカも消費者のためのデータ検索機能を提供することができるので、システムのスループットを向上させます。

 


リンクします。https://zhuanlan.zhihu.com/p/37405836
出典:知っているほとんど

おすすめ

転載: www.cnblogs.com/Allen-rg/p/10956618.html