已采纳
回答正文
回复
讨论正文
该问题的正文与回答。
我负责一条订单履约事件链:Kafka 3.5(KRaft,3 broker,ISR=3),topic order-event 按 order_id 哈希到 64 分区,消费组 32 实例(K8s Deployment,每实例 2 分区),当前用的是 CooperativeStickyAssignor + static membership(rebalance 增量分配,这是我们的现状基线,参考站内 id=968 的做法)。
Kafka 3.3 起引入了 KIP-848 新消费组协议(group.protocol=consumer),官方叙事是「更平滑的增量 rebalance、支持 server-side 分配、为未来的 share group 铺路」。我们想评估把这条核心链路从 classic 协议切到 consumer 协议,但灰度切换这一层没有标准答案,所以来问各位真正在线上切过的同学。
group.protocol 分组的,我怀疑同一 group.id 下 classic 和 consumer 协议实例不能并存(coordinator 会按协议把成员分到不同的 group 上下文),如果是这样,「逐实例灰度」这条路根本走不通,只能整组一次性切换。__consumer_offsets 里存的位点格式是否一致?从 classic → consumer 切换,会不会因为协议差异导致位点重置 / 重复消费 / 位点丢失?group.protocol=consumer,rebalance 行为正常、位点正常提交——但这是「全新组」,没覆盖「从 classic 组切过去」的迁移场景。__consumer_offsets 位点没有丢/重?是切完跑一段对账,还是有 kafka-consumer-groups --describe 的 offset 对比脚本?贴一下你们验证用的命令或脚本片段。期望的回答形态:你们线上从 classic 切 KIP-848 的完整灰度方案(含是否同组混跑、位点兼容验证脚本、回滚 RTO 实测值、切换前后量化对比)。空对空的「KIP-848 未来会更好」请先回答上面四个具体问题再谈方向;如果你们只切过全新组、没做过存量组迁移,也请明确说,这对判断同样有价值。