kafka消费者处理慢的情况下如何提高消息处理速度?不允许增加分区

如题.最近的一个面试题,说是考虑kafka理论特性.具体要求我可能有理解错误.如果各位有研究一眼看出是什么问题,谢谢给个提示.

我搜索了下,提高消费性能的有:

增加分区个数(增加消费者并行数)[不允许];

消费者使用多线程;如果消息处理是CPU密集的加多线程也没用啊;

或许我理解有问题?

换个问题?

生产者1秒生成1W消息.然而此时全部消费者1s只能消费5000,消息处理是纯CPU计算,问:在不添加分区的情况下如何消息处理速度?

试试这个,对于单partition的消费线程,增加一个固定长度的阻塞队列和工作线程池进一步提高并行消费的能力

他这个问题问的核心是消费速度吧,不是处理能力,应该假设处理能力不是瓶颈,否则这个问题就是如何高并发下提升处理能力的问题了。KAFKA本质是拉取模型的消息队列

一般来说有几类

1.增加分区(题上不让)

2.关闭autocommit(偏移量手工提交可以按需减少分区偏移量的更新,有利于提升消费速度)

3.增加单次拉取消息的大小(大量消息的场景下可减少拉取消息的次数)

比较另类的:

1.如果不考虑数据一致性,可以将key值平均一下,这样每个分区的消息大小都差不多,有利于负载均衡

2.如果没有开启压缩,最好开启压缩(需要重启集群),可大大提高通信效率,有得消费速度提升

https://www.roncoo.com/article/index?title=kafka