0

以前のバージョンの Kafka では、1 回限りのセマンティクスの静的マッピングは、コンシューマー グループの不一致時にトランザクション ID とトピック パーティションの間にある必要があり、トランザクション ID が異なるトピック パーティションを取得する可能性があります。

このようなシナリオを回避するために、KIP-447: 正確に一度のセマンティクスに対するプロデューサー スケーラビリティが実装されました。KIP-477 からわかったことは、古いプロデューサーが新しい API(sendOffsetToProdcuer) の助けを借りてフェッチ オフセット呼び出しを使用してフェンシングしたことです。 ID はフェンシングには使用されません。

しかし、ここで私の疑問は、

  1. まだトランザクション プロデューサーは transaction.id を期待しています。最新の Kafka バージョンでは、この値をどのように選択すればよいですか?

  2. transaction.id にはパーティションとの静的マッピングが必要ですが、フェッチ オフセット フェンシングはコンシューマー グループのリバランス中にのみ有効になりますか?

  3. この値は最新バージョンでは無効ですか?

Kafka EoS を理解し、運用システムに実装しようとしています。

4

1 に答える 1

1

これにタグを付けたので、使用していると思います。これは、transactional.idインスタンスごとに異なる可能性があります (以前はプロデューサーのみのトランザクションで必要だったため)。ID をグループ/トピック/パーティションに関連付ける必要がなくなり、必要なプロデューサーの数が大幅に減りました。

https://docs.spring.io/spring-kafka/docs/current/reference/html/#exactly-onceを参照してください

ブローカーは 2.5 以降である必要があります。

于 2021-04-22T13:10:29.103 に答える