RocketMQ这样做,离物理极限性能还差多远?

本文分析了RocketMQ 4.9.1版本中的性能优化策略,包括移除不必要的锁,降低锁的作用范围,以及调整消息发送相关参数。通过自旋锁替换synchronized,去除多余锁,以及优化线程池配置,提升了RocketMQ在高并发场景下的消息发送性能。同时,文章探讨了如何在Java高并发编程中减少锁的使用,以提高系统并发度。
摘要由CSDN通过智能技术生成

根据RocketMQ4.9.1的更新日志,我们从中提取到关于消息发送性能优化的【Issues:2883】,详细链接如下:具体优化点如截图所示:

首先先尝试对上述优化点做一个简单的介绍:

  • 对WaitNotifyObject的锁进行优化(item2)
  • 移除HAService中的锁(item3)
  • 移除GroupCommitService中的锁(item4)
  • 消除HA中不必要的数组拷贝(item5)
  • 调整消息发送几个参数的默认值(item7)
    • sendMessageThreadPoolNums
    • useReentrantLockWhenPutMessage
    • flushCommitLogTimed
    • endTransactionThreadPoolNums
  • 减少锁 的作用范围(item8-12)

通过阅读上述的变更,总结出优化手段主要包括如下三点:

  • 移除不必要的锁
  • 降低锁粒度(范围)
  • 修改消息发送相关参数

接下来结合源码,从中挑选具有代表性功能进行详细剖析,一起领悟Java高并发编程的魅力。

1、移除不必要的锁

本次性能优化,主要针对的是RocketMQ同步复制场景。

我们首先先来简单介绍一下RocketMQ主从同步在编程方面的技巧。

RocketMQ主节点将消息写入内存后, 如果采用同步复制,需要等待从节点成功写入后才能向消息发送客户端返回成功,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值