kafka消费模型
kafka消费模型分为两种。
消费组消费
消费组里面的单个消费者消费一个分区的数据。
如果消费者数量大于分区数量,则多余的消费者不消费分区的数据。所以若采用这种消费模型,应 保证消费者数量和分区数量一致。
消费者-worker进程消费。
第一种消费模型,每个分区对应一个 consumer。
第二种消费模型,只消费数据不处理,处理的工作单独交给 worker线程池,这样可以避免很多 consumer产生的问题。不要把很重的处理逻辑放到消费者中。
难以保证 offset 的语义正确性,可能导致重复消费。
da的kafka消费者数量只有 1 个,单线程去消费数据,使用 while 循环,不断地去 poll 数据(单次最多500条)。
若要提高消费者数量,可以多开几个线程来执行 while 循环。
单线程消费的情况下,为了提高数据处理速度,使用了10个worker线程来处理数据,poll 到数据后,直接提交数据到worker线程池进行数据处理。