当前位置: 首页 > news >正文

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。
http://www.lryc.cn/news/429597.html

相关文章:

  • el-image的配套使用(表格,表单)
  • MKS MWH-5匹配器Automatc matching impedance Network手侧
  • 打卡50天------图论
  • 实现 FastCGI
  • 0x01 GlassFish 任意文件读取漏洞复现
  • RLOC_ORIGIN
  • 【Python】成功解决 NameError: name ‘reload‘ is not defined
  • Android.bp和Android.mk文件有的区别
  • 思科设备静态路由实验
  • 学习笔记第二十九天
  • Apache Paimon走在正确的道路上|一些使用体验和未来判断
  • 安装MySQL入门基础指令
  • 搜维尔科技:【研究】Haption Virtuose外科手术触觉视觉学习系统的开发和评估
  • 达梦表字段、字段类型,精度比对及更改字段SQL生成
  • 2.pandas--读取文件夹中所有excel文件进行合并
  • WPS Office两个严重漏洞曝光,已被武器化且在野利用
  • 基于Java爬取微博数据(五) 补充微博正文列表图片 or 视频 内容
  • 反射异常捕获 | InvocationTargetException 要用e.getCause()打印才能看到具体异常
  • 【计算机网络】网络版本计算器
  • 使用 Python 爬虫进行网站流量分析:Referer 头的利用
  • 梧桐数据库(WuTongDB):数据库技术中LL算法详解
  • 【秋招笔试】8.18大疆秋招(第一套)-后端岗
  • CSS 的text-size-adjust属性
  • 阿里MAXCOMPUTE数据专辑信息读取并同步数据表
  • rufus制作ubantu的U盘安装介质时,rufus界面上的分区类型选什么?
  • 【系统架构设计师-2018年】案例分析-答案及详解
  • linux驱动入门实验班——平台总线设备驱动模型和设备树
  • 零基础学习Python(六)
  • 微信小程序--31(todolist案例)
  • springboot项目使用本地依赖项,打包后出现NoClassDefFoundError的一种解决方法