RocketMQ 消息存储和发送性能保证|学习笔记

简介: 快速学习 RocketMQ 消息存储和发送性能保证

开发者学堂课程【RocketMQ 知识精讲与项目实战(第三阶段)RocketMQ 消息存储和发送性能保证】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/704/detail/12448


RocketMQ 消息存储和发送性能保证

 

内容介绍:

一、性能对比

二、总结

 

一、性能对比

image.png通过该图可知当前消息发送到 MQ ,MQ 又将消息存储到文件系统当中,如何保证写的速度?其实磁盘的传输速度完全可以匹配网络上数据的传输速度,像是高性能自发的 ssd 顺序写的速度可以达到每秒600 MB ,远远超过网卡的速度。若想要提高文件写的速度,涉及到的关键点是顺序写,若使用的是随机写而不是顺序写其速度是100MB ,相差6000倍。所以 rocketMQ 在使用文件系统进行存储时是使用的顺序写才能保证消息存储的速度。在分析的过程当中,消息的存储时顺序写的过程才能保证当前写的速度。若要将消息发送到消息的消费方,要将消息查询出,查询的操作也是读的一种。那么对于读磁盘而言,如何去保证其性能?在 linux 系统当中分为用户态和内核态。若要将数据从 MQ 当中发送到消费方即客户端,在此过程中,实际进行了四次数据复制,具体意思:数据在磁盘当中,将数据读到内核态再将其复制到应用程序的独占内存即用户态,用户态向外发送通过网卡发送,首先将其读到网卡驱动的内存当中,然后再通过网卡进行发送,最后还是通过复制向外发送。(总过程如图)

image.png经过四次复制,1.从磁盘复制到内核态一次2.内核态内存复制到用户态内存3.从用户态内存复制到网络驱动的内核态内存4.最后从网络驱动的内存复制到网卡中进行传输。若数据量很大,每次都需要经过这四部,查读的性能非常差,如何去提高效率呢?一般而言,我们拥有一个零拷贝的技术,在 java 中就有 API 来实现零拷贝技术,比如: MappedByteBuffer 就是零拷贝技术的一个 API ,零拷贝技术具体指将前面复制的四步操作转化为三步。数据读到内核态正常进行,内核态不需经过用户态直接读到网络驱动内存当中,再由网络驱动内存读到网卡,向外去发送。这种方式减少经过用户态的步骤,使用这种方式零拷贝的技术,读取数据向外发送使得其性能要比一般的复制性能高许多。要求是使用零拷贝技术对文件的大小存在一个限定,这个大小一般需满足1.5-2G 。正是因为这个条件的限制,所以 rocketMQ 存储的文件大小默认就是1G ,之前所说的1.5G 指大概的范围,总之不可超过2G 。为了使用零拷贝技术。

 

二、总结:

在消息存储是否保证使用的是顺序写,在消息的发送使用的是零拷贝技术。这就是 rocketMQ 在消息存储和发送的一个性能上的保证。

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
1月前
|
消息中间件 存储 数据库
RocketMQ 流存储解析:面向流场景的关键特性与典型案例
RocketMQ 流存储解析:面向流场景的关键特性与典型案例
88363 0
|
1月前
|
存储 消息中间件 缓存
RocketMQ 5.0 分级存储背后技术优化包含那几个方面
RocketMQ 5.0 分级存储背后的技术优化是一个综合性的系统工程,需要考虑多个方面,包括存储介质的选择、数据读写策略的设计、数据压缩和解压缩技术的引入、自动的数据分级和迁移机制的实现,以及高可用性和容错性的保证等。这些技术优化的目的是为了实现存储成本和性能的最优平衡,提高系统的可靠性和可用性,满足大规模数据处理的需求。
104 1
|
1月前
|
消息中间件 存储 运维
|
12天前
|
消息中间件 存储 算法
RocketMQ学习笔记
RocketMQ学习笔记
55 0
|
25天前
|
传感器 网络协议 中间件
Mqtt学习笔记--交叉编译移植(1)
Mqtt学习笔记--交叉编译移植(1)
18 0
|
1月前
|
消息中间件 存储 数据库
深度剖析 RocketMQ 5.0,流存储:流场景的诉求是什么?
本文将从使用的角度出发,来更详细的展示一下流存储的场景,看看它和业务消息的场景有哪些区别。 RocketMQ 5.0 面向流存储的场景,提供了哪些特性。再结合两个数据集成的案例,来帮助大家了解流存储的用法。
3358 2
|
1月前
|
存储 消息中间件 负载均衡
RocketMQ 5.0 分级存储背后的技术优化与挑战
RocketMQ 5.0 分级存储背后的技术优化与挑战
|
1月前
|
存储 消息中间件 Apache
谈谈 RocketMQ 5.0 分级存储背后一些有挑战的技术优化
谈谈 RocketMQ 5.0 分级存储背后一些有挑战的技术优化
|
2月前
|
存储 消息中间件 对象存储
谈谈 RocketMQ 5.0 分级存储背后一些有挑战的技术优化
谈谈 RocketMQ 5.0 分级存储背后一些有挑战的技术优化
132214 232
|
3月前
|
消息中间件 存储 Java
RocketMQ-初体验RocketMQ(06)-使用API操作RocketMQ ,理解RocketMQ的存储结构
RocketMQ-初体验RocketMQ(06)-使用API操作RocketMQ ,理解RocketMQ的存储结构
175 0

热门文章

最新文章