Kafka 性能为什么比 RocketMQ 好
Kafka 性能更好的原因
因为 kafka 零拷贝技术跟 RocketMQ 的不一样。
- kafka 零拷贝技术使用的是 sendfile+DMA scatter/gather 。只需要经过 2 次拷贝,2 次上下文切换
- RocketMQ 零拷贝使用的 mmap 内存映射,需要经过 3 次拷贝,4 次上下文切换。
零拷贝相关知识可以移步零拷贝详解_0cpu拷贝-CSDN博客
那么为什么 RocketMQ 不适用 sendfile 呢?
ssize_t sendfile(int out_fd, int in_fd, off_t* offset, size_t count);
// num = sendfile(xxx);
void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);
// buf = mmap(xxx)
我们可以看到注释里写的是两个函数的用法,注释里写的是两个函数的用法,mmap
返回的是数据的具体内容,应用层能获取到消息内容并进行一些逻辑处理。
而 sendfile
返回的则是发送成功了几个字节数,具体发了什么内容,应用层根本不知道。
而 RocketMQ 的一些功能,却需要了解具体这个消息内容,方便二次投递等,比如将消费失败的消息重新投递到死信队列中,如果 RocketMQ 使用 sendfile,那根本没机会获取到消息内容长什么样子,也就没办法实现一些好用的功能了。
而 kafka 却没有这些功能特性,追求极致性能,正好可以使用 sendfile。
除了零拷贝以外,kafka 高性能的原因还有很多,比如什么批处理,数据压缩啥的,但那些优化手段 rocketMQ 也都能借鉴一波,唯独这个零拷贝,那是毫无办法。
kafka 和 RocketMQ 怎么选?
这时候大家估计还是想知道 kafka 和 RocketMQ 到底该怎么选,用哪个。
- 如果是大数据场景,比如你能频繁听到 spark,flink 这些关键词的时候,那就用 kafka。
- 除此之外,如果公司组件支持,尽量用 RocketMQ。
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
Kafka 性能为什么比 RocketMQ 好
Kafka 性能更好的原因 因为 kafka 零拷贝技术跟 RocketMQ 的不一样。 kafka 零拷贝技术使用的是 sendfileDMA scatter/gather 。只需要经过 2 次拷贝,2 次上下文切换RocketMQ 零拷贝使用的 mmap 内存映射,需要经过 3 次拷贝,4 次上下文切换…...
![](https://www.ngui.cc/images/no-images.jpg)
el-image的配套使用(表格,表单)
1. 配合table在一起使用,支持预览 此处使用场景是表格中只显示一张图片 preview-src-list只支持数组,故需要将单个字符串转换为转换为字符串数组 <el-table-column align"center" label"二维码"><template slot-scope&q…...
![](https://img-blog.csdnimg.cn/828cca22bf3247b0a1267bc356341abb.png)
MKS MWH-5匹配器Automatc matching impedance Network手侧
MKS MWH-5匹配器Automatc matching impedance Network手侧...
![](https://www.ngui.cc/images/no-images.jpg)
打卡50天------图论
正式开启图论了,作为一个前端工程师,这个代码随想录真的刷新了我对于算法的认知,每天都在学习新东西。 别着急、放轻松、慢慢来。 一、图论理论基础 二、深搜理论基础 了解一下深搜的原理和过程,其实对于深搜和广搜我自己也写过…...
![](https://i-blog.csdnimg.cn/direct/76509d2bae7d47e79da48bda6767ff7b.png)
实现 FastCGI
CGI的由来: 最早的 Web 服务器只能简单地响应浏览器发来的 HTTP 请求,并将存储在服务器上的 HTML 文件返回给浏 览器,也就是静态 html 文件,但是后期随着网站功能增多网站开发也越来越复杂,以至于出现动态技 术&…...
![](https://i-blog.csdnimg.cn/direct/c938e0a1fd0547c89042ee6701f31c10.png)
0x01 GlassFish 任意文件读取漏洞复现
参考文章: 应用服务器glassfish任意文件读取漏洞 - SecPulse.COM | 安全脉搏 fofa 搜索使用该服务器的网站 网络空间测绘,网络空间安全搜索引擎,网络空间搜索引擎,安全态势感知 - FOFA网络空间测绘系统 "glassfish"&…...
![](https://www.ngui.cc/images/no-images.jpg)
RLOC_ORIGIN
RLOC_ORIGIN属性为相对放置的对象提供绝对位置或LOC RTL设计中的宏(RPM)。有关定义RPM和使用 RLOC_ORIGIN属性,请参阅《Vivado Design Suite用户指南:使用约束》 (UG903)[参考文献19]。 RPM是通过使用H_set…...
![](https://img-blog.csdnimg.cn/direct/531165c3ae494a6ea813e245d31082c8.gif#pic_center)
【Python】成功解决 NameError: name ‘reload‘ is not defined
【Python】成功解决 NameError: name ‘reload’ is not defined 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介:985高校…...
![](https://img-blog.csdnimg.cn/2e3c99f0a4b845b29f5bf275a90a552f.jpeg)
Android.bp和Android.mk文件有的区别
文章目录 1. 构建系统2. 语法和格式3. 可维护性和扩展性4. 编译效率5. 未来趋势 在Android的构建系统中, Android.mk和 android.bp是用于定义如何编译项目文件的两种文件类型,它们有一些显著的区别。 1. 构建系统 Android.mk:使用于基于GN…...
![](https://i-blog.csdnimg.cn/direct/664ffe26f044481ca9906f01258da755.png)
思科设备静态路由实验
拓扑及需求 网络拓扑及 IP 编址如图所示;PC1 及 PC2 使用路由器模拟;在 R1、R2、R3 上配置静态路由,保证全网可达;在 R1、R3 上删掉上一步配置的静态路由,改用默认路由,仍然要求全网可达。 各设备具体配置…...
![](https://www.ngui.cc/images/no-images.jpg)
学习笔记第二十九天
IPC 进程间通信方式:共享内存 原理 共享内存是最高效的进程间通信方式之一,因为它允许两个或多个进程直接访问同一块物理内存区域。这种机制避免了数据在用户空间和内核空间之间的频繁拷贝,从而显著提高了数据传输的效率。 在Linux系统中&…...
![](https://img-blog.csdnimg.cn/img_convert/dd6839e9f883a17c1fe3f8c8f96bebbe.jpeg)
Apache Paimon走在正确的道路上|一些使用体验和未来判断
Apache Paimon这个框架大家应该都不陌生了。 在实际工作中大家应该多多少少都用到,这个文章是一个简单的使用体会。不涉及湖框架的拉踩,我们的着眼点是解决实际问题。 我来结合自身体会跟大家说说Paimon这个框架和对未来的一些判断。大家可以参考&#x…...
![](https://i-blog.csdnimg.cn/direct/c1c86a16b999488994e294cae5a55d28.png)
安装MySQL入门基础指令
一.安装MySQL(以5.7版本为例) 1.一路默认安装,截图供大家参考 修改自己window安装名字即可 2.配置环境变量 C:\Program Files\MySQL\MySQL Server 5.7\bin 写入系统环境变量即可在window窗口使用其服务了 3.登录MySQL服务 进入控制台输入命令 mysql -u root …...
![](https://img-blog.csdnimg.cn/img_convert/0c66faaa93af1cc782e12618a5d3ec0f.png)
搜维尔科技:【研究】Haption Virtuose外科手术触觉视觉学习系统的开发和评估
Haption面临挑战 除此之外,外科医生有时会对骨组织进行非常复杂的手术,其中一个例子是人工耳蜗的手术植入。重要的是要避免神经或血管等危险结构受伤,并尽可能轻柔地进行手术。在外科医生能够安全、无差错地进行此类手术之前,需要…...
![](https://www.ngui.cc/images/no-images.jpg)
达梦表字段、字段类型,精度比对及更改字段SQL生成
达梦表字段、字段类型,精度比对及更改字段SQL生成: 依赖 <!-- 达梦 Connector --><dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.3.62</version>&l…...
![](https://i-blog.csdnimg.cn/direct/9221c888a7fd49dfb6c7a0a8b04586ea.png)
2.pandas--读取文件夹中所有excel文件进行合并
文章目录 代码对应的本地文件文件夹目录三个文件夹中的内容test01.xlsxtest02.xlsxtest03.xlsx 三个文件合并后得到merge.xlsx文件文件内容 生成result.xlsx文件内容 代码 import glob import pandas as pddf_merge pd.DataFrame() # 创建一个空的DataFramefolder_path &qu…...
![](https://www.ngui.cc/images/no-images.jpg)
WPS Office两个严重漏洞曝光,已被武器化且在野利用
WPS Office作为一款用户基数超过2亿的广泛使用的办公套件,被发现存在两个关键漏洞(CVE-2024-7262和CVE-2024-7263),这些漏洞可能导致用户遭受远程代码执行攻击。这两个漏洞的CVSS评分为9.3,表明它们的严重性很高&#…...
![](https://i-blog.csdnimg.cn/direct/7ff22355dcb1471086757e51fb006564.png)
基于Java爬取微博数据(五) 补充微博正文列表图片 or 视频 内容
基于Java爬取微博数据五 补充微博正文列表图片 or 视频 内容 数据分析补充图片 or 视频执行结果 在通过对微博正文内容中的图片 or 视频内容进行分析后,图片 or 视频 链接是可以直接通过 Java 代码下载或者转存的,那么这样就可以补充我们在 【基于Java爬…...
![](https://i-blog.csdnimg.cn/direct/a6b8cc4ea5b043edabe1bfcb6f07242c.png)
反射异常捕获 | InvocationTargetException 要用e.getCause()打印才能看到具体异常
背景:线上某段和反射相关的代码报错了,但是异常信息打印只看到了 InvocationTargetException,没打印具体的异常。就像这样:java.lang.reflect.InvocationTargetException: null 查阅资料后发现要用e.getCause()才能打印具体异常&a…...
![](https://i-blog.csdnimg.cn/direct/e5e9665bc5db4baeb05b18efd0c575e2.png)
【计算机网络】网络版本计算器
此前我们关于TCP协议一直写的都是直接recv或者read,有了字节流的概念后,我们知道这样直接读可能会出错,所以我们如何进行分割完整报文?这就需要报头来解决了! 但当前我们先不谈这个话题,先从头开始。 将会…...
![](https://img-blog.csdnimg.cn/img_convert/bae360c87763395fd38807ed213dc466.png)
使用 Python 爬虫进行网站流量分析:Referer 头的利用
在互联网时代,网站流量分析是了解用户行为、优化网站结构和提升用户体验的重要手段。本文将介绍如何使用 Python 爬虫技术结合 HTTP Referer 头进行网站流量分析,以及如何实现这一过程。 什么是 HTTP Referer 头? HTTP Referer 头是一个请求…...
![](https://www.ngui.cc/images/no-images.jpg)
梧桐数据库(WuTongDB):数据库技术中LL算法详解
LL 算法是一种自顶向下的语法分析算法,广泛用于构建解析器。LL 分析器逐个读取输入符号,从左到右分析(Left-to-Right),并使用最左推导(Leftmost Derivation)来生成语法树。因此,LL 分…...
![](https://img-blog.csdnimg.cn/img_convert/1aa7d7a78793007c38310179b3887551.jpeg)
【秋招笔试】8.18大疆秋招(第一套)-后端岗
🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…...
![](https://www.ngui.cc/images/no-images.jpg)
CSS 的text-size-adjust属性
text-size-adjust 属性在CSS中用于控制用户是否可以调整网页中文字的字体大小。这个属性主要针对移动设备上的浏览器,尤其是那些允许用户通过捏合(pinch)手势来缩放整个页面的浏览器。 语法 text-size-adjust: none; text-size-adjust: aut…...
![](https://i-blog.csdnimg.cn/direct/7c7c110fa2cb403ba21db81e89f2c01f.png)
阿里MAXCOMPUTE数据专辑信息读取并同步数据表
阿里MAXCOMPUTE数据专辑信息读取并同步数据表 在阿里云大数据体系中,我们可以使用数据地图的数据专辑,对数据的类别等进行一个管理 那么管理后的数据,我们想要落表进行相关的数据分析,如何做呢? 查看阿里云官方文档…...
![](https://img-blog.csdnimg.cn/330a8744c54347028f04a91c5b656f70.jpg)
rufus制作ubantu的U盘安装介质时,rufus界面上的分区类型选什么?
rufus制作ubantu的U盘安装介质时,rufus软件界面上的分区类型选什么(如下图)? 在使用Rufus制作Ubuntu的U盘安装介质时,分区类型的选择取决于我们的计算机的引导方式。 以下是具体的选择建议: 1、查看计算机的引导方式…...
![](https://i-blog.csdnimg.cn/direct/4897df638ed34bc7862bcab5b8b25c46.png)
【系统架构设计师-2018年】案例分析-答案及详解
试题一(25分) 阅读以下关于软件系统设计的叙述,在答题纸上回答问题1至问题3。 【说明】 某文化产业集团委托软件公司开发一套文化用品商城系统,业务涉及文化用品销售、定制、竞拍和点评等板块,以提升商城的信息化建设…...
![](https://www.ngui.cc/images/no-images.jpg)
linux驱动入门实验班——平台总线设备驱动模型和设备树
目录 前言 一、重要结构体 二、编程思路 1.platform_driver结构体 2.probe 三、使用设备树 1.步进电机 2.红外遥控 四、代码示例 前言 在这里主要记录学习韦东山老师Linux驱动人入门实验班的笔记,韦东山老师的驱动课程讲的非常好,想要学习驱动…...
![](https://i-blog.csdnimg.cn/direct/fe57e10861154bd6a3c9a85fd2f7c5e4.png)
零基础学习Python(六)
1. 元类的应用 使用元类给对象添加一个固有属性author: 对类名进行限定,要求类名必须是大写字母开头: class MetaC(type):def __init__(cls, name, bases, attrs):if not name.istitle():raise TypeError("类名必须是大写字母开头~")return …...
![](https://i-blog.csdnimg.cn/direct/4f0a4e7f9818450b8086f2d2eaf12652.png)
微信小程序--31(todolist案例)
一.功能 输入待办事件添加代办事件删除代办事件 二、步骤 1.添加输入框 .wxml代码: <!-- 1.输入框 --><input type"text" bindinput"handleInput" value"{{text}}" /> .wxss代码: /* 1.输入框样式 */ i…...
![](https://img-blog.csdnimg.cn/img_convert/328be91a9af2577d9e4595100bdbe3c9.png)
做神马网站优化排/2023年东莞疫情最新消息
PHP array_values() 函数用来获得数组中所有元素的值,语法如下:array array_values ( array $arr )参数 arr 表示被操作的数组。返回值:以索引数组的形式返回 arr 中所有元素的值。使用示例如下://键值数组$info array(name >…...
![](/images/no-images.jpg)
奥门网站建设/最新新闻摘抄
Stepper常常用于表单的提交中,比如内容较多,一页显示不了,要分几页提交时使用 https://api.flutter.dev/flutter/material/Stepper-class.html...
2017网站备案抽查/搜索引擎排名优化公司
当你在seachBar中输入字母之前的时候,只是用鼠标选中searchBar的时候,如图 终端输出截图如下:(这个时候调用先shouldBeginEditing,之后调用didBeginEditing,) 当你希望选中UISearchBar的时候…...
外贸网站建设模板下载/怎样优化网站排名
要记住这个表示重要的事情是 left 和 right 的属性将成为对 BinaryTree 类的其他实例的引用。 例如,当我们在树中插入一个新的左子节点时,我们创建另一个 BinaryTree 实例,并在根节点中修改self.leftChild 来引用新树节点。 我们必须考虑两种…...
![](/images/no-images.jpg)
做app网站公司哪家好/网站域名查询网
1.变量赋值:namelbg 等号前后不能有空格name"Lebron James" 变量值中有空格要用双引号echo ${name} 用${}更保险shopt -s -o nounset 设置“先声明再使用”2.取消变量:unset 释放变量和函数的内存3.位置参数:…...
![](/images/no-images.jpg)
昆明网站建设锐网/还有哪些平台能免费营销产品
PostgreSQL 8.1 中文文档PrevFast BackwardChapter 7. 查询Fast ForwardNext 7.6. LIMIT 和 OFFSET 附加上 LIMIT和OFFSET 子句之后,你就可以检索原来查询语句查询出来的结果中的一部分数据行: SELECT select_listFROM table_expression[LIMIT { number …...