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版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
1月前
|
消息中间件 存储 Java
招行面试:10Wqps场景,RocketMQ 顺序消费 的性能 如何提升 ?
45岁资深架构师尼恩在其读者群中分享了关于如何提升RocketMQ顺序消费性能的高并发面试题解析。面对10W QPS的高并发场景,尼恩详细讲解了RocketMQ的调优策略,包括专用方案如增加ConsumeQueue数量、优化Topic设计等,以及通用方案如硬件配置(CPU、内存、磁盘、网络)、操作系统调优、Broker配置调整、客户端配置优化、JVM调优和监控与日志分析等方面。通过系统化的梳理,帮助读者在面试中充分展示技术实力,获得面试官的认可。相关真题及答案将收录于《尼恩Java面试宝典PDF》V175版本中,助力求职者提高架构、设计和开发水平。
招行面试:10Wqps场景,RocketMQ 顺序消费 的性能 如何提升 ?
|
2月前
|
消息中间件 Kafka 测试技术
消息队列 MQ 性能大揭秘
本文对比了RabbitMQ、RocketMQ、Kafka和Pulsar四款消息队列的性能。RabbitMQ的吞吐量为万级,延迟在低吞吐量时可低至微秒级;高吞吐量下延迟显著上升。RocketMQ官方宣称支持万亿级吞吐量,实际测试中可达百万级TPS,延迟为毫秒级。Kafka和Pulsar的吞吐量均为百万级,Kafka延迟低至2ms,Pulsar延迟约10ms。总体来看,Kafka在高吞吐量下表现最优,而RabbitMQ适合对速度与可靠性要求高的低吞吐量场景。
110 0
消息队列 MQ 性能大揭秘
|
4月前
|
消息中间件 存储 监控
说说如何解决RocketMq消息积压?为什么Kafka性能比RocketMq高?它们区别是什么?
【10月更文挑战第8天】在分布式系统中,消息队列扮演着至关重要的角色,它不仅能够解耦系统组件,还能提供异步处理、流量削峰和消息持久化等功能。在众多的消息队列产品中,RocketMQ和Kafka无疑是其中的佼佼者。本文将围绕如何解决RocketMQ消息积压、为什么Kafka性能比RocketMQ高以及它们之间的区别进行深入探讨。
153 1
|
6月前
|
消息中间件 存储 监控
RocketMQ的性能优势?
【8月更文挑战第29天】RocketMQ的性能优势?
174 2
|
6月前
|
消息中间件 Prometheus 监控
RabbitMQ性能调优指南
【8月更文第28天】RabbitMQ 是一个非常流行的消息队列中间件,它支持多种消息协议,并且可以轻松集成到各种系统中。随着应用的扩展,确保 RabbitMQ 在高负载环境下能够高效稳定地运行变得至关重要。本文将深入探讨如何通过配置、监控以及最佳实践来优化 RabbitMQ 的性能。
987 1
|
6月前
|
消息中间件 存储 数据库
深入学习RocketMQ的底层存储设计原理
文章深入探讨了RocketMQ的底层存储设计原理,分析了其如何通过将数据和索引映射到内存、异步刷新磁盘以及消息内容的混合存储来实现高性能的读写操作,从而保证了RocketMQ作为一款低延迟消息队列的读写性能。
|
9月前
|
消息中间件 存储 算法
RocketMQ学习笔记
RocketMQ学习笔记
190 0
|
9月前
|
传感器 网络协议 中间件
Mqtt学习笔记--交叉编译移植(1)
Mqtt学习笔记--交叉编译移植(1)
172 0
|
9月前
|
消息中间件 存储 数据库
RocketMQ 流存储解析:面向流场景的关键特性与典型案例
RocketMQ 流存储解析:面向流场景的关键特性与典型案例
88682 20
|
9月前
|
存储 消息中间件 缓存
RocketMQ 5.0 分级存储背后技术优化包含那几个方面
RocketMQ 5.0 分级存储背后的技术优化是一个综合性的系统工程,需要考虑多个方面,包括存储介质的选择、数据读写策略的设计、数据压缩和解压缩技术的引入、自动的数据分级和迁移机制的实现,以及高可用性和容错性的保证等。这些技术优化的目的是为了实现存储成本和性能的最优平衡,提高系统的可靠性和可用性,满足大规模数据处理的需求。
215 1