Kafka八股笔记
目录
概述
消费相关
Kafka是否会发生重复消费?若会发生,一般导致重复消费的理由是什么?若会发生,一般可以使用什么方式避免重复消费的发生?
参考博文:
回答: 可能会产生重复消费。
可能的原因如下:
- 消费者宕机、重启等。导致消息已经消费但是没有提交offset。
- 若消费者使用自动提交offset(配置开启了
enable.auto.commit
),但当还没有提交的时候,有新的消费者加入或者移除,发生了rebalance。再次消费的时候,消费者会根据提交的偏移量来,于是重复消费了数据。 - 消息处理耗时,或者消费者拉取的消息量太多,处理耗时,超过了
max.poll.interval.ms
的配置时间,导致认为当前消费者已经死掉,触发再均衡。
可以采用避免的方法如下:
- 消息表
- 数据库唯一索引
- 缓存消费过的消息id
如何提高Kafka的消费能力
没找到什么更好的答案
回答:
- 增加消费者数量
- 增加消费线程数量
- 理论上,增加partition数量也能够增强kafka的处理能力,但是在协调、同步、系统资源使用上可能会带来更大的开销。