java_66666 2018-08-21 03:21 采纳率: 0%
浏览 7590
已结题

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

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

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

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

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

或许我理解有问题?

换个问题?

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

  • 写回答

2条回答 默认 最新

  • m0_37599385 2018-08-21 07:20
    关注

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

    评论
  • qq_38535182 2018-08-21 03:24
    关注

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

    一般来说有几类

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

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

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

    比较另类的:

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

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

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

    评论

报告相同问题?

悬赏问题

  • ¥15 RichTextBox中追加文本时报错
  • ¥15 关于c语言的学习问题
  • ¥15 activity升级到flowable工作流act_ge_bytearray的草稿json数据复制到act_de_model 的model_editor_json的脚本
  • ¥15 cvi使用CreateThread创建线程时,出现存储空间不足无法处理此命令的错误
  • ¥15 求苹果推信imessage批量推信技术
  • ¥15 ubuntu 22.04 系统盘空间不足。隐藏的docker空间占用?(相关搜索:移动硬盘|管理系统)
  • ¥15 c++ word自动化,为什么可用接口是空的?
  • ¥15 Matlab计算100000*100000的矩阵运算问题:
  • ¥50 VB6.0如何识别粘连的不规则的数字图片验证码
  • ¥16 需要完整的这份订单所有的代码,可以加钱