场景:腾讯云 CKafka 实例,一个 Topic 有 12 个分区,消费组里目前有 4 个消费者实例,业务是把消息解析后写入下游数据库。 现象: 1. 促销活动期间,消息堆积量持续上升,监控里该消费组的未消费消息数达到几百万条,消费延迟从几秒涨到几十分钟。 2. 消费者实例的 CPU 不高,但每条消息写数据库的耗时变长,数据库侧出现了行锁等待。 3. 想临时增加消费者实例来追赶进度,担心触发再均衡导致消费暂停,以及重复消费。 已尝试: 1. 把单次拉取的最大条数调大,吞吐提升有限。 2. 看到 max.poll.interval.ms 和 session.timeout.ms 两个参数,但不确定在处理变慢时应该怎么设,之前出现过消费者被踢出消费组的情况。 3. 还没有评估过增加分区数对消息顺序和消费者分配的影响。 想请教: 1. 消费者数量超过分区数时是否有意义?扩容到 12 个实例以上之后,还有哪些办法提高并行度,同时不破坏同一业务键的顺序? 2. 再均衡期间的消费暂停大概如何估算,使用静态成员或协作式再均衡能缓解多少?在 CKafka 上是否都可用? 3. 下游数据库成为瓶颈时,应该怎样做批量写入、限流和幂等,才能保证重复消费不造成数据重复? 4. 追赶堆积的过程中,怎样监控进度并估算清完堆积所需时间,需要关注哪些指标?
相似问题