初学者最大的迷惑是:kafka能保证一条消息不被重复消费吗? 如果能,它是通过什么机制实现的?

重复是设计和开发的大敌,所以在数据库里面有自增主键,人们对避免重复已经根深蒂固观念:觉得任何系统应该必备避免重复的功能。
但是这种重复的观念,是从存储端的角度来看的,kafka也是实现了,每个消息都有自己的id,可以说是不重复的。

但是如果从消费端的角度来看,kafka只是一个大数组,是个高并发的容器,它不管你的业务实现,是否重复消费由业务端出来。这个道理跟使用数据库的情况完全一样。你能问:mysql能保证一条记录不被重复查询吗?当然不能了。所以,是否重复要从两个方面考虑:存储方面是不重复的,消费端是由业务端来控制,这不是kafka的责任。