• 张申傲
    2023-07-21 来自北京
    【思考题】 影响消息队列性能和可靠性的因素很多,如果选择其中最关键的,个人认为可能有以下几点: 1. 网络带宽与延迟:消息队列本质上还是一个I/O密集型系统,内部没有太多复杂的计算逻辑,因此网络无论对Producer、Broker还是Consumer来说都比较重要,网络一抖动,全链路的吞吐量可能就会受影响。 2. Producer的发送模式:选择Oneway/Sync/Async不同的发送模式,会直接影响Producer的性能和可靠性。 3. Broker的物理硬件:特别是磁盘和内存,会直接关系到Broker的存储和消费性能。 4. Consumer的Rebalance:在Rebalance期间,整个消费会暂停,因此如何最大程度降低Rebalance的影响,对Consumer端来说比较重要。

    作者回复: 哈哈,答得非常好~。我补充一点后面会讲的副本数和一致性协议,一致性协议是影响性能的很重要的因素。

    
    2
  • shan
    2023-09-24 来自河南
    集群性能影响总结 1. 网络层面 网络稳定性:网络质量不稳定,传输过程可能存在丢包,需要通过TCP重传机制进行重传,如果出现大量重传会影响性能,一般需要监控网络包重传率。 传输加密:启用数据加密传输后,传输性能也会下降。 网络延时:跨地域通信,会增加网络延时,可以尽量将客户端与服务端部署在一个网络中,避免网络延时带来影响。 网络带宽:一般会关注客户端网卡、中间网络链路、Broker节点网卡的带宽容量,跨地域通信、跨云传输,中间网络带宽也容易成为瓶颈, 2. 生产者层面 生产者消息发送模式:一般支持同步发送、异步发送、发送即忘,在性能上发送即忘 > 异步发送 > 同步发送。 批量发送:批量发送的全链路耗时会高于非批量消息发送。 3. Broker层面 (1)应用程序本身 比如Java编写的RocketMQ,可以对JVM调优等。 (2)操作系统 主要是调整操作系统参数,比如最大FD数量、Scoket缓冲区大小等。 (3)物理硬件 包括CPU、内存、网卡、硬盘等物理资源,通过提升物理硬件来提高性能。 对于消息队列来说,涉及到消息的存储和读取,一般内存和硬盘影响比较大。 4. 消费者层面 消费者性能主要跟消费模型(一般选用Push模式)、消费者负载均衡(消费者需要再本地做负载均衡分配消息队列进行消费)、消费粒度(RocketMQ5.0以前只能以队列为维度进行消费,5.0以后推出了消息粒度的消费)、位点管理(消费消费完消息之后,需要对消费位点进行更新)方面有关。 不过对性能影响最大的是网络链路耗时,特别是在跨区、跨地域的情况下。
    展开
    
    
  • 樊
    2023-09-06 来自北京
    从开始看到现在,还是感觉每篇都是概念性的东西在反复讲,希望有一些深入拆解的内容(比如列举一些容易出问题的点,大概是什么问题,影响是什么,如何解决)
    
    
  • aoe
    2023-07-22 来自新加坡
    原来在消息队列调优的场景下,只要网卡不被打满,就不用理会网卡
    
    