RocketMQ学习笔记:零拷贝

这是本人学习的总结,主要学习资料如下

  • 马士兵教育
  • rocketMq官方文档

目录

  • 1、零拷贝技术
    • 1.1、什么是零拷贝
    • 1.2、mmap()
    • 1.3、Java中的零拷贝


1、零拷贝技术

1.1、什么是零拷贝

使用传统的IO,从硬盘读取数据然后发送到网络需要经过四个步骤。

  1. 通过DMA复制读取硬盘数据,复制到系统的内核缓冲区。
  2. 从内核缓冲区通过CPU将数据复制到应用程序缓冲区。这里涉及到内核态转用户态。
  3. 从应用程序缓冲区通过CPU复制数据到套接字缓冲区。这里涉及到用户态转内核态。
  4. 最后通过DMA从套接字缓冲区复制数据到网卡等网络设备。发送数据的事就交给网络设备。

请添加图片描述
DMA(Direct Memory Access)可以说是一个可以直接访问磁盘等硬件的设备,不过速度要比CPU要慢很多。

所以传统的IO有四次复制过程。零拷贝则是利用内存映射等技术,减少其中的一两个拷贝过程,大大提高效率。

1.2、mmap()

RocketMQ是通过mmap()内存映射技术来实现零拷贝。

mmap将磁盘上的文件位置和应用程序缓冲区做了一个一一对应的映射,使应用程序可以像读取应用程序缓冲区一样直接读取到磁盘的文件内容。

使用了mmap后就可以省去一次DMA的复制。变成下面的过程。

  1. 通过mmap复制数据到应用程序缓冲区。
  2. 从应用程序缓冲区通过CPU复制数据到套接字缓冲区。这里涉及到用户态转内核态。
  3. 最后通过DMA从套接字缓冲区复制数据到网卡等网络设备。发送数据的事就交给网络设备。

在这里插入图片描述


1.3、Java中的零拷贝

Java中可以通过MappedByteBuffer来实现mmap但是这种方式一次最多只能映射1.5 ~ 2G的文件,这也是RocketMQ的单个CommitLog文件默认是1G的原因。

File file = new File(path);
// 通过Channenl进行内存空间和磁盘空间的映射
FileChannel fileChannel = new RandomAccessFile(file, "rw").getChannel();
// 该Buffer就是映射空间,可以看成是磁盘和内存共享的
MappedByteBuffer map = fileChannel.map(FileChannel.MapMode.READ_WRITE, 0, 1024);
// 写内容
mmap.put("Content".getBytes());
// 写内容到磁盘
mmap.flip();
byte[] bb = new byte[4];
//读取数据
mmap.get(bb, 0, 4);
// 解除mmap
unmap(mmap);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/489034.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【QT入门】 Qt代码创建布局之分裂器布局详解

往期回顾: 【QT入门】 Qt内存管理机制详解-CSDN博客 【QT入门】 Qt代码创建布局之水平布局、竖直布局详解-CSDN博客 【QT入门】 Qt代码创建布局之栅格布局详解-CSDN博客 【QT入门】 Qt代码创建布局之分裂器布局详解 一、什么是分裂器布局 在Qt中,分裂器…

⨯ EPERM: operation not permitted, link ...

新增区块链相关包后,项目在部署的时候报错,报错内容如下: 报错信息: ⨯ EPERM: operation not permitted, link /Users/XXX/.cache/act/be662ca67b3f7553/hostexecutor/node_modules/bigint-buffer/build/node_gyp_bins/python…

11.测试教程-自动化测试selenium-3

文章目录 1.unittest框架解析2.批量执行脚本2.1构建测试套件2.2用例的执行顺序2.3忽略用例执行 3.unittest断言4.HTML报告生成5.异常捕捉与错误截图6.数据驱动 大家好,我是晓星航。今天为大家带来的是 自动化测试selenium第三节 相关的讲解!&#x1f600…

基于javaweb(springboot)汽车配件管理系统设计和实现以及文档报告

基于javaweb(springboot)汽车配件管理系统设计和实现以及文档报告 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐…

【机器学习】引领未来的力量:技术革新与应用探索

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟。提供嵌入式方向的学习指导、简历面…

端口的学习

端口是什么口?【网络常识3】_哔哩哔哩_bilibili 简化后的数据包: 软件和端口是1对多的关系。 http默认端口是80 https默认端口是443

二十一、软考-系统架构设计师笔记-真题解析-2019年真题

软考-系统架构设计师-2019年上午选择题真题 考试时间 8:30 ~ 11:00 150分钟 1.前趋图(Precedence Graph)是一个有向无环图,记为: → {(Pi,Pj)Pi mustcomplete before Pj may start}。假设系统中进程P{P1,P2,P3,P4,P5,P6,P7,P8},且进程的前趋图如下&…

(2022级)成都工业学院Java程序设计(JAVA)实验二:类和对象

写在前面 1、基于2022级软件工程/计算机科学与技术实验指导书 2、代码仅提供参考 3、如果代码不满足你的要求,请寻求其他的途径 运行环境 window11家庭版 IntelliJ IDEA 2023.2.2 jdk17.0.6 实验要求 1、 控制台菜单。在 Exp02_x 类中添加一个方法 menu_x&…

【Chrome控制台】network选项卡的使用

首先打开调试面板「windows:F12;mac:commandoptioni」,找到Network选项卡,其中是对网络相关的数据信息。 录制 控制台内容区域左上角红色按钮就是录制按钮,默认是开启状态,表示监听整个页面运行过程中所产…

【直播课】2024年PostgreSQL CM认证实战培训课程于4月27日开课!

课程介绍 了解关注开源技术,学习PG以点带面 Linux/Andriod(操作系统)、Apache/Tomcat(应用服务器)、OpenStack/KVM(虚拟化)、Docker/K8S(容器化)、Hadoop(大…

【Java - 框架 - Lombok】(2) SpringBoot整合Lombok完成日志的创建使用 - 快速上手;

"SpringBoot"整合"Lombok"完成日志的创建使用 - 快速上手; 环境 “Java"版本"1.8.0_202”;“Lombok"版本"1.18.20”;“Spring Boot"版本"2.5.9”;“Windows 11 专业版_22621…

泛型编程的启蒙之旅

个人主页:日刷百题 系列专栏:〖C/C小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 🌎欢迎各位→点赞👍收藏⭐️留言📝 ​ ​ 讲模板之前呢,我们先来谈谈泛型编程: 泛型编程:编写与类…

【LeetCode热题100】98. 验证二叉搜索树(二叉树)递归阶段总结1

一.题目要求 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 二.题目难度…

Keycloak介绍

1.什么是Keycloak Keycloak是一个开源的身份和访问管理解决方案,它提供了单点登录(SSO)功能。 Keycloak 支持多种标准协议,包括 OpenID Connect 和 OAuth 2.0,这使得它能够与各种服务进行集成,以提供身份…

几个常用的AI工具

人工智能大模型的出现对人类社会产生了深远的影响,这些影响既包括积极的方面,也包括一些潜在的挑战: 1. **提高效率**:AI大模型能够快速处理大量数据,提高工作效率,尤其在数据分析、自然语言处理等领域。 2. **辅助决…

Spring - AOP/事务 实现原理

AOP 基本概念 官方文档: Aspect Oriented Programming with Spring Spring AOP supports the following AspectJ pointcut designators (PCD) for use in pointcut expressions: within - limits matching to join points within certain types (simply the exec…

怎么建设数据中台?详解数据中台架构内的三大平台

一、什么是数据中台? 要知道“中台”是什么,就得先了解“前台”和“后台”。 前台,就是我们日常使用的过程中可以直接看到和感知到的东西,比如你打开某东app买了个3080显卡,在这个过程中你看到的页面以及搜索、点击详…

考研数学|武忠祥高数全年学习包分享

u1s1,武忠祥老师的课程真的不错,宝藏级老师 其实我觉得没必要对比每一个考研数学老师,汤家凤还有张宇以及武忠祥都是非常受欢迎的老师,也都很有实力,只不过讲课的风格有所区别。 比如汤家凤老师就像是高中那种不苟言…

洁净环境监测相关法规指南汇总

一 洁净级别确认 1. 用于生产无菌药品的洁净室和洁净空气设备如单向流系统(UDAF)、限制进入屏障系统(RABS)和隔离器,应根据所需环境特性进行确认。生产操作需要在适当洁净度级别的环境中进行,以降低粒子或…

M1 mac安装 Parallels Desktop 18 激活

M1 mac安装 Parallels Desktop 18 激活 下载安装Parallels Desktop 18.1.1 (53328) 激活1. 拷贝prl_disp_service2. 在终端打开Crack所在位置3. 输入命令,激活成功 下载 安装包和激活文件下载地址 链接: https://pan.baidu.com/s/1EjT7xeEDcntIIoOvvhBDfg?pwd9pue …