4.3. 適切なパーティション割り当てストラテジーの選択
適切なパーティション割り当てストラテジーを選択します。これにより、Kafka トピックパーティションがグループ内のコンシューマーインスタンス間でどのように分散されるかが決まります。
パーティションストラテジーは次のクラスでサポートされます。
-
org.apache.kafka.clients.consumer.RangeAssignor
-
org.apache.kafka.clients.consumer.RoundRobinAssignor
-
org.apache.kafka.clients.consumer.StickyAssignor
-
org.apache.kafka.clients.consumer.CooperativeStickyAssignor
partition.assignment.strategy
コンシューマー設定プロパティーを使用してクラスを指定します。range 割り当てストラテジーは、パーティションの範囲を各コンシューマーに割り当てます。これは、関連するデータをまとめて処理する場合に便利です。
あるいは、コンシューマー間で均等にパーティションを分散する round robin 割り当てストラテジーを選択します。これは、並列処理を必要とする高スループットのシナリオに最適です。
より安定したパーティション割り当てを行うには、sticky ストラテジーや cooperative sticky ストラテジーを検討してください。Sticky ストラテジーは、可能な場合、リバランス中に割り当てられたパーティションを維持することを目的としています。以前コンシューマーに特定のパーティションが割り当てられていた場合、sticky ストラテジーは、リバランス後に同じコンシューマーでそれらの同じパーティションを保持することを優先し、別のコンシューマーに移動したパーティションのみを取り消して再割り当てします。パーティションの割り当てをそのままにしておくと、パーティション移動のオーバーヘッドが軽減されます。cooperative sticky ストラテジーは cooperative rebalance もサポートしており、再割り当てされていないパーティションから中断なく消費することを可能にします。
利用可能なストラテジーがデータに適合しない場合は、特定の要件に合わせたカスタムストラテジーを作成できます。