目录

Kafka八股笔记

概述

消费相关

Kafka是否会发生重复消费?若会发生,一般导致重复消费的理由是什么?若会发生,一般可以使用什么方式避免重复消费的发生?

参考博文:

  1. Kafka重复消费总结

回答: 可能会产生重复消费。

可能的原因如下:

  1. 消费者宕机、重启等。导致消息已经消费但是没有提交offset。
  2. 若消费者使用自动提交offset(配置开启了enable.auto.commit),但当还没有提交的时候,有新的消费者加入或者移除,发生了rebalance。再次消费的时候,消费者会根据提交的偏移量来,于是重复消费了数据。
  3. 消息处理耗时,或者消费者拉取的消息量太多,处理耗时,超过了max.poll.interval.ms的配置时间,导致认为当前消费者已经死掉,触发再均衡。

可以采用避免的方法如下:

  1. 消息表
  2. 数据库唯一索引
  3. 缓存消费过的消息id

如何提高Kafka的消费能力

没找到什么更好的答案

回答

  1. 增加消费者数量
  2. 增加消费线程数量
  3. 理论上,增加partition数量也能够增强kafka的处理能力,但是在协调、同步、系统资源使用上可能会带来更大的开销。