Kafka QA
目录
如何保证消息有序
不能保证全局有序,只能保证局部有序。
全局有序,要求同个 producer 生产的消息被所有 consumer 顺序消费。
Kafka 通常配置多个 partion,消息经过 LB 进入到各 partion(FIFO 队列,局部有序)。
由于各 consumer 的处理能力不同,所以消费的顺序不能保证和 producer 生产的顺序一致。
如何处理积压、落后
消息堆积是 MQ 实现流量控制的手段,但如果消息挤压,撑爆了个别节点,就需要处理了。
排查 consumer,如果日志正常,说明消费速度落后,可以增加 consumer、开启批量拉取。
如果 consumer 程序有 BUG:
- 创建一个 10倍 patition 的临时topic
- 编写一个临时 consumer,将积压 topic 的消息写入临时topic
- 修复 consumer 程序的 BUG,部署为原来规模的10倍
- 消息积压解决后,恢复原有 consumer 规模
ack 的时候其中一个 replica 挂掉了怎么办
leader 挂了
follower 挂了