幸福飞过海 - kafka https://fengqi.me/tag/kafka/ [原创]解决Spring Boot Kafka 分区不均匀问题 https://fengqi.me/java/520.html 2020-08-18T15:10:00+00:00 现象我们通常使用多个分区,开多线程来提高Kafka的消费速度,分区不均匀会导致线程闲置,消费速度过慢,进而导致消息积压。问题原因消息写入哪个分区是由生产者决定的,在调用kafkaTemplate.send()方法时,可以指定分区,否则使用默认分区器DefaultPartitioner计算。因为分区可能会调整,通常我们不会指定固定分区,而是依靠分区计算器。查看DefaultPartitioner代码可以得知:当指定了key每次都会计算出固定的分区,否则会自动计算出一个可用分区。Kafka指定key计算出固定分区是为了满足消息有序的需求,如果你需要保证消息的有序性而指定了key,本文描述的方法可能不适用你。解决方案那么解决这个问题的方式就是:不再指定key自定义分区器,每次计算出不同的分区方法1不可行,因为这需要调整业务,成本太高,且合理的使用key有助于业务更清晰。[...]