適切な使用[カフカ(二十から三)カフカ・コンシューマ・グループとサブスクライブを割り当てます

Apacheのカフカ・コンシューマ・グループを使用する場合は、消費者の対応するパーティションパーティションの割り当てのためのプロセスは、私たちが「自動」購読し、「手動」割り当て方法を使用することができますがあります。

同時に、「自動」と「手動」パーティションの割り当ては、時にはそれを台無しにしようと、お互いに影響を与えます。正しい使い方は、まずこれらの2つの方法のシーンを理解する必要があります。

まず、コンシューマ・グループの使用シナリオ

カフカは、コンシューマ・グループに2つのシナリオを使用していました:

  • 「キューモード」:メッセージのすべての共通のテーマの個人消費の同じグループでは、だけでなく、メッセージだけで消費者を扱っていることを確認します。そのメッセージを受信するために、仲間を行い、各消費者および1つまたは複数のパーティション:すべてのパーティションは、相関関係を作るために、すべての消費者や消費者団体のテーマになります。逆に一つだけのパーティションが消費者に関連付けられている、と言い、そのメッセージは、他の消費者によって受信されることはありません。
    消費者はほんの始まりである場合には、すべてのパーティションは、それに割り当てられます。メッセージのサイズを大きくすると、私たちは消費者、水平スケーリング機能の数を拡張する必要があり、すべての消費者に到達することができますパーティションを1つだけ関連していました。任意のパーティションのない分布がないため、パーティションは、アイドル状態になり、消費者の数よりも大きいです。
  • メッセージのテーマは、先行するシーンに合わせて一緒にその消費者団体、消費者団体やアサイン作業のすべての加入者に送信されることを別の消費者団体の手段を作成するには、「モデルをパブリッシュ/サブスクライブ」。私たちは、このようなトランザクションの数、金融システム、ERPシステムは、それを消費しますし、リスクもそれを消費する必要が監視などのさまざまなアプリケーション要件を、持っているので、これはしばしばです。これは、非同期透明な共通のデータを実現しています。
    リバランス:両方のシナリオでは、コンシューマ・グループは、重要な機能を持っています。グループに参加するための新しい消費者を分割すると、有効なパーティション(消費者の数<=トピックパーティション)がある場合、再均衡配分操作のを開始します(まだ元の消費者に関連付けられているだろう少なくとも一つのパーティションを保持)を加え、新規顧客に再割り当て。さまざまな理由の消費者がグループから脱退する場合も同様に、そのパーティションのすべては、消費者の残りの部分に割り当てられます。

第二に、「自動」または「手動」

サブスクライブ()メソッドでKafkaConsumer APIで前述の自動分注手段。この方法は、必須のコンシューマ・グループを設定する必要があり、group.idパラメータは、消費者のために空にすることはできません。そして、あなたはパーティションの割り当てに対処する必要はありません。
アサイン()メソッドを:対応は()メソッドをサブスクライブ、あなたはその後、消費者がパーティションを読んでいるテーマを指定手動で使用することができます。あなたは正確に制御メッセージ処理負荷を必要とするだけでなく、決定することができたときどのパーティション何のメッセージこのマニュアルでは有用であろう。しかし、その後カフカは、リバランスの機能を提供することはできません。手動モードを使用した場合と、あなたはgroup.idが空で、消費者のグループを指定することはできません。
どちらのアプローチは、独自のアプリケーションシナリオを持っているが、リスクをもたらす両方の方法を、使用することは推奨されません。グループが一つだけ消費者C1を有し、一方は2つのパーティションP1、P2のテーマT1を有するサブスクライブするためにサブスクライブし、消費者グループG1と仮定する。このときG1、P1及びP2における新しい消費者C2は割り当て方法に関連しました。すべてを可能に応じて、実際には悪い状況です。本質的には、シーンの使用が混同されて、あなたはG1がアシストまたはパブリッシュ/サブスクライブする際に一般的であるわかりません。実際の使用では、オフセット提出の形式はこれです:

    key = [group, topic, partition]
    value = offset

ノートのキーは、消費者、C1を区別していなかった、とC2は、汚れを書き込みます同じキーを持っています。C1またはC2ベン崩壊は、メッセージが失われていますが、再起動のカバレッジを書き換えるために得るためにお互いを相殺する表します。

第三に、要約

パーティションが自動的に割り当てられそうことを、サブスクライブ()メソッドを使用するのが最適。私たちは多くの労力を節約するために、すべての後に、コンシューマ・グループメカニズムカフカは非常に良いされています。あなたが指定した方法で()割り当てを使用する必要がある場合でも、あなたはまた、対応する消費者のグループを設定する必要があります。混在しないようにしてください。

公開された334元の記事 ウォンの賞賛227 ・は 80000 +を見て

おすすめ

転載: blog.csdn.net/BeiisBei/article/details/104743322