记一次与Kafka大神的交流
背景 线上某项目有三个实例同时从Kafka集群某topic消费数据,该topic有六个分区,每个实例的代码都是一样,都是开线程去消费数据。项目中数据消费下来会生成一个文本文件,之前由于没有部署多实例,所以只会生成一个文件,前段时间考虑国庆期间数据量会增大,就部署了多实例,今天发现并不是每个实例都生成了文件,只有一个实例正常生成了文件,另外两个实例都没有生成文件,实例状态都是正常的没有任何问题。 分析 今天发现问题的时候,我觉得很奇怪,理论是不应该会出现这个现象的。但是最后突然想起来每个实例开的是六个线程。这就能解释了,因为Kafka同一个topic的最大并发数是不能超过分区数量的。也就是说该topic有六个分区,最多也就只能有六个线程去消费,三个实例,每个实例六个线程,就是18个,必然有两个实例是消费不到数据的。 问题 那么就有一个问题了,那就是为什么刚好是第一个实例能消费数据,剩余的两个实例却没有消费到呢? 请教 发现了问题那么接下来就是解决问题了,自己解决不了,那自己就是找专业人士。经过在Kafka中国社区群里有人给了回答。 之所以第一个实例能消费数据,剩余两个实例消费不到数据,是....