RocketMQ 4.9.2 重磅发布!
经过社区多轮投票,Apache RocketMQ 初冬的第一个版本4.9.2 终于来了!
在该版本中,优化核心特性及文档超过 40 项,并且再次对性能进行了全面提升,此外最值得关注的 RIP-7 Commitlog 多目录存储支持重磅发布。
Commitlog多目录存储支持
通过Commitlog多目录存储功能,一方面能有效利用服务器上多个磁盘的存储空间,另一方还能让单个Broker实例通过动态挂载新磁盘的方式,实现动态地扩充存储能力。具体实现的示意图如下:
要使用该功能,需要在配置文件中的 storePathCommitLog设置多个目录,目录之间使用逗号隔开,如"storePathCommitLog=/data1/commitlog,/data2/commitlog,/data3/commitlog"。
如此配置后,Broker在每次单个Commitlog文件写满之后,会选择新的目录创建下一个commitlog文件。storePathCommitLog 参数支持动态更新,但是如果从单目录切换到多目录,需要重启。此外,针对单个磁盘异常需要替换的情况,新增了readOnlyCommitLogStorePaths配置项,用于标记目录只读,通过禁写和数据过期策略,可实现单盘的平滑下线。当前,我们采用了轮询的方式来选择下一个要使用的目录,并且会自动跳过被标记只读和磁盘空间不够(默认85%阈值)的目录,用户不必担心因为磁盘空间不均衡从而导致浪费的情况。
高性能优化
本次是4.9.1开启性能优化版本的延续: 使用LongAdder替换AtomicLong,在指标统计时,性能数倍提升。
LongAdder 与 AtomicLong 的区别在于高并发时前者将对单一变量的CAS操作分散为对数组中多个元素的CAS操作,取值时进行求和。
这里分享测试代码, 欢迎大家跑一跑,留言分享自己测试的结果。
@BenchmarkMode(Mode.Throughput)@Fork(1)@Threads(4)@Warmup(iterations = 1, time = 1)@Measurement(iterations = 2, time = 5)@State(Scope.Benchmark)public class CasVsAdder {private AtomicLong count;private LongAdder adder;@Setuppublic void init() {count = new AtomicLong(0);adder = new LongAdder();}@Benchmarkpublic void testCas() {for (int i = 0; i < 10000; i++) {count.incrementAndGet();}}@Benchmarkpublic void testAdder() {for (int i = 0; i < 10000; i++) {adder.increment();}}public static void main(String[] args) throws RunnerException {Options options = new OptionsBuilder().include(CasVsAdder.class.getSimpleName()).output(System.getProperty("user.home") + "/" + CasVsAdder.class.getSimpleName()+ ".txt").build();new Runner(options).run();}}
实用工具
支持元数据导出 by @panzhi33
支持命令行查询消费者配置 by @zhangjidi2016
支持DLQ topic默认可读 by @maixiaohai
...
本次版本的顺利发布,离不开RocketMQ社区的每一位参与贡献者,尤其鸣谢Apache RocketMQ Committer 黄理,江海挺,小伟等。
另外,从该版本起,每次发布新版本, 都可以在github上看到每个PR的提供者的名字和第一次贡献者的名字,比如:https://github.com/apache/rocketmq/releases/tag/rocketmq-all-4.9.2。
加入 Apache RocketMQ 社区
Apache RocketMQ自2016年走入全球开发者视野以来,已然发展成为电商、金融、教育、科技等领域技术中台最核心的数据底座。据不完全统计,单单在国内,金融100强、保险100强、财富500强、券商50强超过70%的企业在核心应用链路上规模化部署了RocketMQ,全球5朵大云也纷纷上线了RocketMQ云产品服务。在历经2代RocketMQ人的辛勤创作下,目前正迎来10年之大变革 - 下一代架构升级。
欢迎立志打造世界级分布式系统的同学加入社区,添加社区开发者微信:rocketmq666 即可进群,参与贡献,共同打造下一代消息流融合处理平台。
下载地址:
https://rocketmq.apache.org/release_notes/release-notes-4.9.2/



