2016-03-24 6 views
3

私はカフカのマニュアルを読んで、次の行に気づいたんだ。しかし、パーティションよりも消費者群でより多くの消費者のインスタンスが存在することはできないというカフカの消費者をどのようにスケールすることができますか?

注意を。

Hmm。これを自動スケールするにはどうすればよいですか?

たとえば、hi/loの優先順位を持つメッセージングシステムを使用しているとします。したがって、hiとloの優先順位メッセージのメッセージとパーティションのトピックを作成します。

これがRabbitMQのだった場合、私はこのような各パーティションに割り当てられた消費者の自動スケーラブルグループ、必要があるだろう:私は私がすることはできませんカフカモデルを理解していれば> 1を

enter image description here

をコンシューマーグループ内のパーティションごとにコンシューマーを割り当てる必要があります。

オクラホマので、どのようなこのような1>についての消費者団体:

enter image description here

カフカの制限を回避するのを取得し

けど...私は、これは両方の消費者団体は、パーティションから引っ張っされるだろうどのように機能するかを理解していれば、 msg.hiなどの独自のオフセットを使用すると、どちらも他のものについて知ることができません。つまり、メッセージが2回配信される可能性があります。

私はカフカのウサギのデザインにあった機能を果たし、それでも動作の「待ち行列」を維持できます(私はメッセージを2回送信したくありません)。私は何が欠けていますか?

答えて

1

hiとloのパーティションをまとめて作成するだけです。 12は良い数字です。それでは60です。あなたが望む最大限の並列化にどれだけマッチしたパーティション数を選ぶだけです。

私は個人的にはmsg.himsg.loを別々のトピックにしていますが、これは必須ではありません。パーティション間でメッセージを分割するには、カスタムparititoningを行うことができます。

1

メッセージが2回消費されるという想定は正しいです(各グループはトピックからのメッセージの100%を消費するため)。
私はDavidに同意します。さらに、必要以上に多くのパーティションを作成することをお勧めします。必要なときにグループ内のスレッド数を増やす余裕があります。

後でパーティション数を増やす(および/またはブローカーを追加する)ことはできますが、すでに完了しているといいですし、スレッド数を増やせば完了できますあなたは事前に行うことができますすべての準備を行う必要がありますので、迅速な応答)。

関連する問題