metaq顺序消息_RocketMQ消息存储

消息存储介绍

如何保证消息可靠性:数据持久化存储

8b8eb31b9b8ae5a1f9dd814ecb26f204.png

存储介质

806f47b35b507564ed651e8f05c75b0b.png

如何保证消息的快速读写

磁盘顺序写(600mb/s)超过一般网卡速度,而随机写(100kb/s)

零拷贝:避免CPU做大量的数据拷贝任务,从而提高消息存盘和网络发送的速度

a0e11ec89629bdc8802270004e50919c.png

限制:文件大小1.5~2G (commitLog文件大小1G)

消息存储结构

83d7684e4fb09d0232a40cb1d496a11a.png

. CommitLog文件:消息真正的物理存储文件

. ConsumerQueue文件:类型于数据库中的索引文件,存储的是指向物理存储的地址

. IndexFile文件:通过key或时间区间查询消息的索引文件(控制台查询)

消息存储结构

5e6e2f4d71de8d7bd3c117a34c6178b3.png

1、同步刷盘+同步复制 保证master、slave都能落盘,耗时最长

2、同步刷盘+异步复制 只保证master能落盘(当master繁忙或者不可用,则消息消费不到)

3、异步刷盘+同步复制 保证master、slave数据都能刷到内存,可能引起数据丢失(推荐使用)

4、异步刷盘+异步复制 保证master数据能刷到内存,可能引起数据丢失(当master繁忙或者不可用,则消息消费不到),耗时最短,吞吐量最高

文件过期策略

为什么会有文件过期删除机制

由于MetaQ操作CommitLog、ConsumeQueue文件是基于文件内存映射机制,并且在启动的时候会将所有的文件加载,为了避免内存与磁盘的浪费、能够让磁盘能够循环利用、避免因为磁盘不足导致消息无法写入等引入了文件过期删除机制

过期文件

文件默认超过3天(不会关注该文件的内容是否全部被消费)

触发删除过期文件

每天4点DTS触发、磁盘空间不足(当磁盘使用率大于磁盘空间警戒线水位【默认是90%】,会阻止消息写入,当超过85%时会删除过期文件)、人工触发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值