パーティション化されたトピックがあります。パーティションにはX
のパーティションがあります。カフカのメッセージキーを設計する最良の方法は何ですか?
現在のところ、メッセージを作成するときは、topic
とvalue
と指定したKafkaのProducerRecord
を作成します。私はkey
を定義しません。 私が理解する限り、私のメッセージはデフォルトの組み込みパーティションを使ってパーティション間で均等に分配されます。 一方、私はカフカの消費者のスレッドプールを持っています。各カフカの消費者は、トピックからのメッセージを消費する独自のスレッドで実行されます。それらの消費者のそれぞれには同じgroup.id
が与えられます。これにより、メッセージを並行して消費することができます。すべてのコンシューマには、読みやすいパーティションの公平な配分が割り当てられます。
私のメッセージが整然とした形で消費されるようにしたい。私はカフカがパーティション内のメッセージの順序を保証していることを知っています。したがって、適切なキー構造を考え出す限り、メッセージは同じパーティションに分割されるように分割されます。メッセージキーは、メッセージをグループ化してパーティションに格納します。
意味がありますか?
Q:キーがうまく設計されていないため、パーティションが不均一になる可能性はありますか?ある人は他の人よりも多くの記録を受け取るかもしれません。それは私のカフカクラスターの悪い方法のパフォーマンスに影響を与えることができますか?メッセージキー設計のベストプラクティスは何ですか?
メッセージの順序は、失敗した試行で再試行するように構成されているかどうかにかかわらず、プロデューサの構成方法によって異なる場合があります。カフカのプロデューサ設定パラメータはありますか?または、再試行ポリシーは、アプリケーションコードで考慮して実装する必要があるものですか? –