Apache Kafkaを使用して、TimeseriesデータをTimeseriesデータベースに永続化しました。私たちが始めたのは、単一のトピック、プロデューサー、このトピックを書くことと、単一の消費者がこのトピックを読んで、そのデータをTimeseriesデータベースにダンプすることでした。パーティションを使用したApache Kafka Scalingトピック
私たちは3つのブローカーインスタンスを持っていました。最初の試行で気づいたのは、プロデューサーがトピックにメッセージを書き込むのがかなり速かったということでした。 30分以内に、私たちは約150万のメッセージを持っていました。消費者は毎秒300のメッセージをやっていました。
私たちの次のアプローチは、トピックを分割し、より多くの消費者インスタンス(パーティションの数に等しい)を持つことでした。これは消費者の書き込み速度を確実に改善しました。今私の質問は以下のとおりです。
私は6に私のトピックパーティションを設定し、私は唯一の3ブローカインスタンスを持っている場合はどうなりますか。どのブローカインスタンスがパーティション1〜6のリーダーになるでしょうか?
必要なパーティションの数を決定する式はありますか?これが私たちのテスト環境だったので、それを使って遊ぶことができ、それを拡大することができました。私たちは、私たちの生産環境で同じことをすることができないかもしれません。だからどのようにパーティションのサイズを決定する?
私の質問は、どのブローカーがリーダーパーティションを持っていたのでしょうか?私はここに6つのパーティションと3つのブローカーを持っています。したがって、各ブローカーはリーダーパーティションとして2つのパーティションを持っていますか? – sparkr
はい、それらはバランスをとります。それを試してみてください。また、トピックを作成するときに実行されているものによって異なります。 1つのブローカーしか実行されていない場合、そのブローカーに指導者を与えるだけです。そして、2番目のブローカーを元に戻すと、自動的にパーティションのリーダーを再調整することはできません。これを制御する設定(ヘッドの頭上を思い出さないでください)とコマンドラインツールを使用して、再バランスを強制したり、設定のアンバランスを解消したりします。 –