2017-05-17 14 views
0

私は、カフカのトピックからのメッセージを並列処理するために、数多くの処理エージェントに設計を提案しています。少なくとも1回のメッセージ配信用のKafkaパーティションとコンシューマグループ

私は消費者グループ全体で1回のメッセージ処理にほぼ確実に近づいていますが、少なくとも1回は許容できます。それはかつて存在しない、メッセージをトピックに公開されている場合

  • は、私は多くの点でドキュメントが不明瞭見つけて、私はこれが実行可能なアプローチであるかどうかを知る必要があり、いくつかの具体的な質問がありますトピック内のすべてのパーティションにわたってのみ、またはおそらく複数のパーティションに複製されていますか?私は、両方の可能性をサポートできる文章を読んでいます。

  • は、パーティションごと、またはコンシューマ/消費グループ/パーティションごとに「オフセット」ですか?
  • 新しいコンシューマを開始するとき、コンシューマグループ全体または割り当てられたパーティションのオフセットを調べますか?
  • 新しいコンシューマーの規模を拡大し、空きパーティションがない場合(私はパーティションあたり1つのコンシューマーしか存在しないと信じています)、カフカは既存のパーティションからの既存のメッセージを再調整し、既存のパーティションの消費者?

他にもこれが私の理解に役立つかもしれない点がありますか?

答えて

2

メッセージがトピックに公開されている場合、そのトピック内のすべてのパーティションにわたって1回だけ存在するのか、複数のパーティションに複製されるのでしょうか?私は、両方の可能性をサポートできる文章を読んでいます。

[A]:パーティションはレプリケーションファクタに応じてノード間で複製されます。 2つのノードと2のレプリケーションファクタを持つブローカにパーティションP1がある場合、node1はP1のプライマリリーダーになり、node2もP1の内容/メッセージが生成されますが、レプリカになります(レプリケーションは非同期で行われます)

は、パーティションごとまたはコンシューマ/消費グループ/パーティションごとに「オフセット」ですか?

[A]:ブローカの観点からパーティションごとに。 'オフセット'は消費者側で明示的に追跡/管理されるため、コンシューマーごとにも同様です。コンシューマーコードはこの作業をカフカに委託するか、手動でオフセットを管理することができます。

私は新しいコンシューマーを開始するときにコンシューマーグループ全体または割り当てられたパーティションのオフセットを見ますか?

[A]:kafkaは、新しいコンシューマがグループに入り、特定のパーティションを割り当てたときに再調整をトリガします。そのコンシューマは、新しいコンシューマをスケールアップし、空きパーティションがない場合、消費者はそれが担当するパーティションのオフセットのみを気にします。

kafkaは既存のパーティションから既存のメッセージを再調整し、それが既存のパーティションのオフセットとコンシューマにどのような影響を及ぼしますか?

[A]並列処理の場合、理想的なシナリオは、1-1のマッピングb/wコンシューマとパーティションを持つことです。パーティションが10個ある場合は、最大10個のコンシューマを持つことができます。 11番目のものを持ち込む場合、カフカは既存の消費者がグループを離れるまでパーティションを割り当てません。

関連する問題