【RocketMQ】6.RocketMQ 存储特点

本文探讨RocketMQ中采用的零拷贝技术及其优缺点,包括mmap+write与sendfile两种方式,并深入分析RocketMQ选择Ext4文件系统的原因及相应的优化措施。

6.1 零拷贝原理

Consumer 消费消息过程,使用了零拷贝,零拷贝包含以下两种方式

  1. 使用 mmap + write 方式

优点:即使频繁调用,使用小块文件传输,效率也很高
缺点:不能很好的利用 DMA 方式,会比 sendfile 多消耗 CPU,内存安全性控制复杂,需要避免 JVM Crash问题。
2. 使用 sendfile 方式

优点:可以利用 DMA 方式,消耗 CPU 较少,大块文件传输效率高,无内存安全新问题。
缺点:小块文件效率低于 mmap 方式,只能是 BIO 方式传输,不能使用 NIO。

RocketMQ 选择了第一种方式,mmap+write 方式,因为有小块数据传输的需求,效果会比 sendfile 更好。

关于 Zero Copy 的更详细介绍,请参考以下文章
http://www.linuxjournal.com/article/6345

6.2 文件系统

RocketMQ 选择 Linux Ext4 文件系统,原因如下:

Ext4 文件系统删除 1G 大小的文件通常耗时小于 50ms,而 Ext3 文件系统耗时约 1s 左右,且删除文件时,磁盘IO 压力极大,会导致 IO 写入超时。

文件系统层面需要做以下调优措施

文件系统 IO 调度算法需要调整为 deadline,因为 deadline 算法在随机读情况下,可以合并读请求为顺序跳跃方式,从而提高读 IO 吞吐量。

Ext4 文件系统有以下 Bug,请注意
http://blog.donghao.org/2013/03/20/%E4%BF%AE%E5%A4%8Dext4%E6%97%A5%E5%BF%97%EF%BC%88jbd2%EF%BC%89bug/

6.3 数据存储结构

这里写图片描述

提供的引用内容未涉及RocketMQ的broker.conf配置文件中关于store的配置方法和相关信息,无法根据引用回答该问题。不过,一般来说,RocketMQ broker.conf配置文件中store相关配置涉及消息存储的各个方面,以下是一些常见的store配置项及说明: ### 存储路径相关 ```plaintext # 存储根目录 storePathRootDir=/data/rocketmq/store # 消息存储目录 storePathCommitLog=/data/rocketmq/store/commitlog # 消息消费队列存储目录 storePathConsumeQueue=/data/rocketmq/store/consumequeue # 消息索引文件存储目录 storePathIndex=/data/rocketmq/store/index # checkpoint文件存储路径 storeCheckpoint=/data/rocketmq/store/checkpoint # abort文件存储路径 abortFile=/data/rocketmq/store/abort ``` ### 存储刷盘策略 ```plaintext # 刷盘策略,ASYNC_FLUSH为异步刷盘,SYNC_FLUSH为同步刷盘 flushDiskType=ASYNC_FLUSH ``` ### 存储同步复制策略 ```plaintext # 主从同步策略,SYNC_MASTER为同步双写,ASYNC_MASTER为异步复制 brokerRole=ASYNC_MASTER ``` ### 存储文件相关 ```plaintext # CommitLog每个文件的大小,默认1G mapedFileSizeCommitLog=1073741824 # ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 ``` ### 存储清理相关 ```plaintext # 磁盘使用达到该比例,开始清理过期文件,默认0.9 diskMaxUsedSpaceRatio=0.9 # 消息文件保留时长,默认72小时 fileReservedTime=72 ``` 这些配置项会影响RocketMQ的消息存储性能、可靠性和磁盘使用情况,需要根据实际的业务场景和硬件资源进行合理配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅胖子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值