AutoMQ vs Kafka: 来自小红书的独立深度评测与对比

news2024/9/28 19:23:39

测试背景

当前小红书消息引擎团队与 AutoMQ 团队正在深度合作,共同推动社区建设,探索云原生消息引擎的前沿技术。本文基于 OpenMessaging 框架,对 AutoMQ 进行了全面测评。欢迎大家参与社区并分享测评体验。

01

测试结论

本文主要测评云原生消息引擎 AutoMQ 和 Apache Kafka(3.4 版本)的性能对比。

测试结论:

  • 实时读写:相同集群规模,AutoMQ 的极限读写吞吐是 Apache Kafka 的3倍,E2E 延迟是 Apache Kafka 的 1/13

  • 追赶读:相同集群规模,AutoMQ 的追赶读峰值是 Apache Kafka 的 2 倍,同时追赶读期间 AutoMQ 的写吞吐和延迟不受任何影响

  • 分区迁移:AutoMQ 的分区迁移平均耗时为秒级别,而Apache Kafka分区迁移平均耗时为分钟甚至小时级

02

测试配置

基准测试在 Linux Foundation's OpenMessaging Benchmark 的基础上进行增强,模拟真实用户场景提供了动态工作负载。

2.1 配置参数

AutoMQ 默认数据强刷盘再响应,使用配置如下:


acks=all
flush.message=1

AutoMQ 通过 EBS 底层的多副本机制来保障数据高可靠,在 Kafka 侧无需多副本配置。Apache Kafka 选择 3.4.0 版本,并参考 Confluent 的建议不设置 flush.message = 1,使用三副本内存异步刷盘来保障数据的可靠性(机房掉电故障会造成数据丢失),配置如下:


acks=all
replicationFactor=3
min.insync.replicas=2

2.2 机器规格

16c、最大网络带宽 800MB/S、配置一块 150MB/S 带宽的云盘

03

详细对比

3.1 实时读写性能对比

本测试测量 AutoMQ 和 Apache Kafka 在相同集群规模下,不同流量规模的的性能和吞吐上限。测试场景如下:

  1. 各自部署6台数据节点,创建 1 个 100 分区的 Topic

  2. 分别启动 100 MiB/s、200 MiB/s 的 1:1 读写流量(message size=4kb,batch size = 200kb);此外额外测试二者的极限吞吐。

负载文件:tail-read-100mb.yaml、tail-read-200mb.yaml、tail-read-900mb.yaml

极限吞吐发送延迟:

极限吞吐:

发送耗时和 E2E 耗时的详细数据:

分析:

  1. 相同集群规模下, AutoMQ 的极限吞吐(870MB/S)是 Apache Kafka (280MB/S) 的 3 倍

  2. 相同集群规模和流量(200 MiB/s)下,AutoMQ 的发送延迟 P999 是 Apache Kafka 的 1 / 50, E2E 延迟是 Apache Kafka 的 1/13

  3. 相同集群规模和流量(200 MiB/s)下,AutoMQ 带宽占用是 Apache Kafka 的 1 / 3

3.2 追赶读性能对比

追赶读是消息和流系统常见的场景:

  • 对于消息来说,消息通常用作业务间的解耦和削峰填谷。削峰填谷要求消息队列能将上游发送的数据堆积住,让下游慢慢的消费,这时候下游追赶读的数据都是不在内存中的冷数据。

  • 对于流来说,周期性的批处理任务需要从几个小时甚至一天前的数据开始扫描计算。

  • 额外还有故障场景:消费者宕机故障若干小时后恢复重新上线;消费者逻辑问题,修复后,回溯消费历史数据。

追赶读主要关注两点:

  • 追赶读的速度:追赶读速度越快,消费者就能更快从故障中恢复,批处理任务就能更快产出分析结果。

  • 读写的隔离性:追赶读需要尽量不影响生产的速率和延时。

测试
本测试测量 AutoMQ 和 Apache Kafka 在相同集群规模下的追赶读性能,测试场景如下:

  1. 各自部署6台数据节点,创建 1 个 100 分区的 Topic

  2. 以 300 MiB/s 的吞吐持续发送。

  3. 在发送 1TiB 数据后,拉起消费者,从最早的位点开始消费。

负载文件:catch-up-read.yaml

测试结果:

分析

  • 相同集群规模下,AutoMQ 的追赶读峰值是 ApacheKafka 的 2 倍。

  • 追赶读期间,AutoMQ 的发送流量没有受到任何影响, AutoMQ 的平均发送延迟上升了约 0.4 ms;而 Apache Kafka 的发送流量下降了 10%,平均发送延迟也飙升到了 900ms。这是由于,Apache Kafka 在追赶读时会读取硬盘,且没有做 IO 隔离,这占用了云盘的读写带宽,导致写硬盘带宽减少,发送流量下降;同时读硬盘中的冷数据会污染 page cache,同样会导致写入延迟升高。作为对比,AutoMQ 读写分离,在追赶读时不会读硬盘,而是读对象存储,不会占用硬盘读写带宽,也就不会影响发送流量和延迟。

3.3 分区迁移能力对比

本测试测量 AutoMQ 和 Apache Kafka 在带日常发送消费流量场景下,迁移一个具备 30 GiB 数据的分区到一个不存在该分区副本的节点的迁移耗时和影响。具体的测试场景为:

  1. 2 台 broker,在其上创建:
  • 1 个单分区单副本的 Topic A,并以 40 MiB/s 吞吐持续读写。

  • 1 个 4 分区单副本的 Topic B,并以 10 MiB/s 吞吐持续读写,作为背景流量。

  1. 10 分钟后,将 Topic A 的唯一一个分区迁移到另一个节点,迁移吞吐限制 100 MiB/s。负载文件:partition-reassign.yaml

分析

  • AutoMQ 分区迁移只需要将 EBS 中缓冲的数据上传到 S3 即可在新的节点安全打开,500 MiB 的数据通常在 2~5 秒内即可完成上传。AutoMQ 分区的迁移耗时和分区的数据量无关,分区迁移时间平均下来在 2 秒左右。AutoMQ 分区在迁移过程中向客户端返回 NOT_LEADER_OR_FOLLOWER 错误码,在迁移完成后客户端更新到新的 Topic 路由表,客户端内部重试发送到新的节点,因此该分区的此刻的发送延迟会上涨,迁移完成后恢复到日常水位。

  • Apache Kafka 分区迁移需要将分区的副本拷贝到新的节点,拷贝历史数据的同时还要追赶新写入的数据,迁移的耗时 = 分区数据量 / (迁移吞吐限制 - 分区写入吞吐),在实际生产环境中,分区迁移往往是小时级的,本测试中的 30 GiB 的分区迁移耗时就到了 15 分钟。除了迁移耗时长以外,Apache Kafka 迁移需要从硬盘读取冷数据,即使在设置了 throttle 的情况下,仍旧会因为抢占 page cache 导致发送延迟的抖动,影响服务质量。

END

关于我们

我们是来自 Apache RocketMQ 和 Linux LVS 项目的核心团队,曾经见证并应对过消息队列基础设施在大型互联网公司和云计算公司的挑战。现在我们基于对象存储优先、存算分离、多云原生等技术理念,重新设计并实现了 Apache Kafka 和 Apache RocketMQ,带来高达 10 倍的成本优势和百倍的弹性效率提升。

🌟 GitHub 地址:https://github.com/AutoMQ/automq
💻 官网:https://www.automq.com

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaDS —— 单链表 与 LinkedList

顺序表和链表区别 ArrayList : 底层使用连续的空间,可以随机访问某下标的元素,时间复杂度为O(1) 但是在插入和删除操作的时候,需要将该位置的后序元素整体往前或者向后移动,时间复杂度为O&…

二分查找算法——部分OJ题详解

目录 关于二分查找算法 部分OJ题详解 704.二分查找 一,分析题目 二,细节处理 三,题目代码 四,*总结朴素模板 *34.在排序数组中查找元素的第一个和最后一个位置 一,查找左端点 二,处理左端点细…

ts实现将相同类型的数据通过排序放在一起

看下效果&#xff0c;可以将相同表名称的字段放在一起 排序适用于中英文、数字 // 排序 function sortByType(items: any) {// 先按照类型进行排序items.sort((a: any, b: any) > {if (a.label < b.label) return -1;if (a.label > b.label) return 1;return 0;});r…

【记录】LaTex|LaTex调整算法、公式、表格内的字体大小(10种内置字号)

文章目录 【记录】LaTex&#xff5c;LaTex调整算法、公式、表格内的字体大小&#xff08;10种内置字号&#xff09;省流版1 字体大小2 测试代码 详细版1 \tiny2 \scriptsize3 \footnotesize4 \small5 \normalsize6 \large7 \Large8 \LARGE9 \huge10 \Huge 【记录】LaTex&#x…

实验02 黑盒测试(组合测试、场景法)

1. 组合测试用例设计技术 指出等价类划分法和边界值分析法通常假设输入变量相互独立&#xff0c;但实际情况中变量间可能存在关联。全面测试&#xff1a;覆盖所有输入变量的所有可能组合&#xff0c;测试用例数量随输入变量的增加而指数增长。 全面测试需要对所有输入的各个取…

Geoserver源码解读六 插件

系列文章目录 Geoserver源码解读一 环境搭建 Geoserver源码解读二 主入口 Geoserver源码解读三 GeoServerBasePage Geoserver源码解读四 REST服务 Geoserver源码解读五 Catalog Geoserver源码解读六 插件&#xff08;怎么在开发模式下使用&#xff09; 目录 系列文章目…

ubuntu计划任务反弹

目录 实验环境 实验步骤 目标主机构造任务计划 构造语句 语句解释 kali开启监听 监听成功 问题 原因 实验环境 攻击者 操作系统&#xff1a;kali IP&#xff1a;192.168.244.141 目标主机 操作系统&#xff1a;ubuntu IP&#xff1a;192.168.244.151 实验步骤 目…

CSS 中的 ::before 和 ::after 伪元素

目录 一、CSS 伪元素 二、::before ::after 介绍 1、::before 2、::after 3、content 常用属性值 三、::before ::after 应用场景 1、设置统一字符 2、通过背景添加图片 3、添加装饰线 4、右侧展开箭头 5、对话框小三角 6、插入icon图标 一、CSS 伪元素 CSS伪元…

数据库使用SSL加密连接

简介 数据库开通SSL加密连接是确保数据传输过程中安全性的关键措施&#xff0c;它通过加密数据、验证服务器身份、保护敏感信息、维护数据完整性和可靠性&#xff0c;同时满足行业标准和法规要求&#xff0c;进而提升用户体验和信任度&#xff0c;为企业的数据安全和业务连续性…

做工和音质都堪称典范!悠律Ringbuds pro耳机动感低音享受

想要长时间佩戴舒适&#xff0c;又要听歌看电影音质好&#xff0c;还想户外运动时不影响听到环境声音&#xff0c;开放式毋容置疑是最好的选择&#xff0c;像我每天坐地铁上下班的时候都会习惯戴耳机&#xff0c;但以前戴入耳式耳机的时候经常会错过站点&#xff0c;耽误了不少…

TREK高压功率放大器维修trek高压电源609E-6

美国Trek维修产品包括&#xff1a;高压放大器、电源、静电电压表、高压功能发生器、放大器、静电测量仪、荷电板、信号放大器、高压电源、功率放大器、高压功能发生器、高压放大器、接触电压表、非接触式电压表、板载控制器、ESD和传感器、ESD电压表、带电板、电离器、表面电阻…

HashMap----源码解读

源码分析&#xff1a; public class HashMap<K,V> extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable 在类的开头声明了几个常量&#xff0c;以下是较为重要的&#xff1a; /*** 定义初始容量大小为16*/ static final int DEFAULT_I…

【射频器件供应】 Marki Microwave

射频、微波和毫米波组件 裸片、表面贴装、连接器和波导 直流至Sub-THz Marki Microwave通过创建强大的性能突破性射频和微波组件产品组合&#xff0c;解决了业界最棘手的技术问题。Marki Microwave 成立于 1991 年&#xff0c;以开发业内最好的混频器为目标&#xff0c;如今已…

kaggle提交csv文件

使用colab完成实验后 将要提交的csv文件拖到kaggle网站自己加入的competition就行 如果kaggle网站无法注册&#xff0c;往往是人机验证问题&#xff1a; kaggle网站验证

6-5,web3浏览器链接区块链(react+区块链实战)

6-5&#xff0c;web3浏览器链接区块链&#xff08;react区块链实战&#xff09; 6-5 web3浏览器链接区块链&#xff08;调用读写合约与metamask联动&#xff09; 6-5 web3浏览器链接区块链&#xff08;调用读写合约与metamask联动&#xff09; 这里就是浏览器端和智能合约的交…

语言模型演进:从NLP到LLM的跨越之旅

在人工智能的浩瀚宇宙中&#xff0c;自然语言处理&#xff08;NLP&#xff09;一直是一个充满挑战和机遇的领域。随着技术的发展&#xff0c;我们见证了从传统规则到统计机器学习&#xff0c;再到深度学习和预训练模型的演进。如今&#xff0c;我们站在了大型语言模型&#xff…

【最经典的79个】软件测试面试题(内含答案)提前备战“金九银十”

001.软件的生命周期(prdctrm) 计划阶段(planning)-〉需求分析(requirement)-〉设计阶段(design)-〉编码(coding)->测试(testing)->运行与维护(running maintrnacne) 测试用例 用例编号 测试项目 测试标题 重要级别 预置条件 输入数据 执行步骤 预期结果 0002.问&…

ctfshow-web入门-文件上传(web166、web167)(web168-web170)免杀绕过

目录 1、web166 2、web167 3、web168 4、web169 5、web170 1、web166 查看源码&#xff0c;前端只让传 zip 上传 zip 成功后可以进行下载 随便搞一个压缩包&#xff0c;使用记事本编辑&#xff0c;在其内容里插入一句话木马&#xff1a; 上传该压缩包&#xff0c;上传成功…

LLM独角兽们就要活不下去了!C.AI被资本抛弃,核心员工跑路;Perplexity陷入传统媒体口水战;微软发明的新型收购方式靠谱么?| ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;ShowMeAI官网 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; 1. 亚马逊「招聘式收购」Adept AI&#xff0c;始作俑者微软正在被联邦「反垄断」调查 Adept AI 官网 → https://www.adept.ai Adept AI 成立于2022年4月&#xf…

分享一个 .NET 通过监听器拦截 EF 消息写日志的详细例子

前言 EF 开发效率确实很高也很便捷&#xff0c;但当它发生错误时&#xff0c;也挺让人头疼的&#xff0c;为什么&#xff1f;因为 EF 就像是一个黑盒子&#xff0c;一切全被封装起来&#xff0c;出错的时候很难定位原因&#xff0c;如果能够知道并打印 EF 生成的 SQL 语句&…