茶叶电子商务网站建设的结论/自媒体代运营

茶叶电子商务网站建设的结论,自媒体代运营,上海免费模板建站,怎么看一个网站用什么程序做的本内容是对知名性能评测博主 Anton Putra Kafka vs RabbitMQ Performance 内容的翻译与整理, 有适当删减, 相关数据和结论以原作结论为准。 简介 在本视频中,我们将首先比较 Apache Kafka 和传统的 RabbitMQ。然后,在第二轮测试中,会将 Kaf…

本内容是对知名性能评测博主 Anton Putra Kafka vs RabbitMQ Performance 内容的翻译与整理, 有适当删减, 相关数据和结论以原作结论为准。

简介

在本视频中,我们将首先比较 Apache Kafka 和传统的 RabbitMQ。然后,在第二轮测试中,会将 KafkaRabbitMQ Streams 进行对比,后者在架构和使用场景上更接近 Kafka(RabbitMQ Streams 是一个相对较新的项目,旨在直接与 Kafka 竞争)。

与往常一样,我们将关注 四大核心指标

  1. 吞吐量(Throughput) ---每秒消息数(Messages per second) 衡量。
  2. 延迟(Latency) --- 追踪每条消息的发送和接收所需时间。
  3. 系统负载(Saturation) --- 包括 CPU 使用率(相对于虚拟机的 CPU 限制)、内存使用情况,以及 磁盘操作(因为 Kafka 采用追加式日志,需要将每条消息存储到磁盘)。
  4. 客户端 CPU 负载 --- 统计所有发送和接收消息的客户端的平均 CPU 使用率

为了运行这些测试,我使用了 AWS。消息代理部署在 i3en.large 规格的实例上,而客户端则运行在 EKS 集群Graviton 实例 上。老实说,这次测试成本不低---要让一个Kafka 代理崩溃,需要消耗大量计算资源。


测试设计

首先,我会快速讲解 KafkaRabbitMQ

Kafka 中,最常用的消息协议之一是 RPC 消息,它采用 二进制格式,相比 JSON 消息 体积更小。这不仅降低了消息代理的负载,还提高了 延迟吞吐量指标。此外,你可以在 gRPC服务间通信(Service-to-Service Communication) 中复用这些消息。

在本次测试中,我使用 Device RPC 消息,它包含以下字段:

  • UUID(设备唯一标识符)
  • MAC 地址
  • 固件版本
  • 设备创建的时间戳

你可以在我的 GitHub 公开仓库 中找到源代码。

测试流程
  1. 在生产者端,我们使用 随机设备数据 生成 Device RPC 消息,并记录当前时间戳。
  2. 然后,我们 同时 将该消息发送到 Kafka 的TopicRabbitMQ 队列(Queue)
  3. 在消费者端,收到消息后,我们从 created_at 字段中提取时间戳,并计算 消息延迟

注意:我们不依赖 Kafka 或 RabbitMQ 内部指标 来测量延迟,而是直接在 客户端 端测量,这样测试方式对两者是 公平且准确 的。

如果你认为 测试设计客户端源码 可以优化,欢迎提出建议或提交 Pull Request




第一轮测试:Kafka vs. 传统 RabbitMQ

让我们开始第一轮测试,比较 Kafka传统 RabbitMQ(后者主要将消息存储在 内存 中)。

刚开始,你就会注意到:

  • RabbitMQ 的消息发送和接收延迟比 Kafka 低近一半。这对于某些应用场景可能至关重要,也可能无关紧要,但总体来说,RabbitMQ 的延迟更低

  • 右侧图表 显示了每个消息系统每秒 处理的消息数

  • Kafka 的 CPU 使用率更高,因为它必须将 每一条消息写入磁盘

  • 左侧图表 显示 Kafka 正在 频繁进行磁盘写入,而 RabbitMQ 几乎不访问磁盘(甚至完全不触碰磁盘)。



另一个重要点:Kafka 的 生产者消费者CPU 使用率 约为 RabbitMQ 客户端的两倍

Kafka 的 CPU 使用率达到 50% 时,延迟开始显著上升。也就是说,当 Kafka 的 CPU 超过 50% 时,其延迟会开始恶化,如果你对低延迟有严格要求,这一点需要特别注意。

RabbitMQ 的极限

  • 当 RabbitMQ 处理达到 15,000 条消息/秒 时,CPU使用率达到 100% ,开始 崩溃,延迟急剧上升。
  • 当 RabbitMQ 处理达到 33,000 条消息/秒 时,生产者和消费者 超时(默认超时 5 秒),开始 请求失败。这意味着 RabbitMQ 的最大吞吐量约为 33,000 条消息/秒
Kafka 的极限

  • Kafka 的 CPU 在更早的阶段就达到了 100%,但它 仍然能够继续处理 所有消息。尽管 延迟增加,但 Kafka 仍 持续运作

  • 继续推高负载,我们发现 Kafka 在 230,000 条消息/秒 时达到极限

接下来,我们打开每个图表,分析整个测试过程的数据。

数据分析

第一轮测试(Kafka vs. RabbitMQ)

  • 吞吐量:Kafka 远超 RabbitMQ。

  • 延迟:RabbitMQ 低得多,这也是 选择 RabbitMQ 的主要原因

  • 磁盘操作:(本次测试)Kafka 依赖 本地 SSD,提高了性能。

  • CPU 使用率:虽然Kafka使用了更多的CPU,但 即使达到 100% CPU 仍能持续运行,而不会像 RabbitMQ 那样CPU到达100%很快失败(因为RabbitMQ主要将数据存储在内存中?)。

  • 客户端的CPU使用情况:

  • 内存使用:RabbitMQ CPU 100% 时,内存使用发生尖峰




第二轮测试:Kafka vs. RabbitMQ Streams

在第二轮测试中,我们对比 KafkaRabbitMQ Streams

  • 一开始,RabbitMQ Streams 的延迟就明显更高
  • 我使用了 官方 Golang 库,它采用 RabbitMQ Streams 专用的二进制协议
  • 这次,RabbitMQ 从一开始就开始写入磁盘,但其 CPU 使用率在测试初期远低于 Kafka

RabbitMQ Streams 的极限
  • Kafka 在 12,000 条消息/秒 时 CPU 达到 100% ,延迟开始上升。

  • RabbitMQ 的 CPU 此时只有 15% ,我推测这是因为 RabbitMQ 处理每条消息的延迟较高

  • 当 RabbitMQ 处理达到 100,000 条消息/秒 时,CPU 100% ,并且性能进一步下降。

  • 当 RabbitMQ 处理达到 135,000 条消息/秒 时,彻底失败
Kafka 的极限
  • 我继续增加 Kafka 的负载,最终 Kafka 在 272,000 条消息/秒 时崩溃

接下来,我们打开所有图表,逐项分析数据。


数据分析

第二轮测试(Kafka vs. RabbitMQ Streams)

  • RabbitMQ Streams 的吞吐量(和第一次测试所用的RabbitMQ相比)有所提升,但 整体速度比 Kafka 慢

  • RabbitMQ Streams 的延迟极高,只适用于 批量数据处理或非延迟敏感的场景,不适用于 低延迟应用

  • 每秒磁盘写入操作的次数:

  • CPU使用情况:

  • 客户端的平均CPU使用情况:

  • 内存使用情况:






结论

  • 如果你需要低延迟,并且 RabbitMQ 满足你的需求,那就选 RabbitMQ
  • 如果你需要高吞吐量、稳定性和可扩展性,Kafka 是更好的选择
  • 在第二轮测试中,Kafka 明显胜出

如果你有更好的 RabbitMQ Streams 优化方案,欢迎分享,我愿意做 更新测试

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

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

相关文章

打磨和修改:字帖自动生成

功能增加一些。 一个人和大语言模型对话的结果。 不过是重复性劳动,特别需要创意的地方还是不容易做到。

电脑干货:万能驱动--EasyDrv8

目录 万能驱动EasyDrv8 功能介绍 主程序界面 驱动解压与安装 PE环境支持 系统部署环境 桌面环境一键解决方案 万能驱动8电脑版是由IT天空出品的一款智能识别电脑硬件并自动安装驱动的工具,一般又称为it天空万能驱动,万能驱动vip版,简称…

Sentinel 限流利器(功能以及源码解析)

Sentinel简介 Sentinel是阿里开源的一款面向分布式、多语言异构化服务架构的流量治理组件。 主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 核心概念 资源 资源是…

子数组 之 logTrick算法,求解或,与,LCM,GCD

文章目录 gcd的问题最大公约数 求解子数组的&,|,lcm,gcd的最值or计数问题,如果采用暴力的做法,那么时间复杂度会来到o(n^2),其实在求解的过程中,会出现很多的结果不变的情况,所以我们就可以提前结束 存在一定的单调性&#x…

应用服务接口第二次请求一直pending问题

目录 一、问题背景二、问题排查过程三、解决方案四、总结 一、问题背景 升级内容发布到灰度环境,验证相关服务,查看接口调用日志,发现第一次请求正常,第二次相同接口请求就一直pending,其他服务也是如此 二、问题排查…

嵌入式八股RTOS与Linux---网络系统篇

前言 关于计网的什么TCP三次握手 几层模型啊TCP报文啥的不在这里讲,会单独分成一个计算机网络模块   这里主要介绍介绍lwip和socket FreeRTOS下的网络接口–移植LWIP 实际上FreeRTOS并不自带网络接口,我们一般会通过移植lwip协议栈让FreeRTOS可以通过网络接口收发数据,具体可…

推荐一款好看的 vue3 后台模板

SoybeanAdmin 项目简介 SoybeanAdmin 是一个基于最新前端技术栈的清新、优雅、高颜值且功能强大的后台管理模板。它采用 Vue3, Vite5, TypeScript, Pinia, NaiveUI 和 UnoCSS 构建,为开发者提供了一个现代化、高效且易于扩展的后台管理系统解决方案。 主要特点&am…

【智能体】从一个聊天工作流了解LangGraph

1. 前言 这篇文章将从如何搭建一个带网络搜索功能的聊天机器人工作流,带你初步了解 LangGraph。 2. 前提条件 已搭建 Python 开发环境,使用 3.11 以上版本。 已熟悉 Python 基础语法。可参考:【LLM】Python 基础语法_llm python入门-CSDN博…

Softmax 回归 + 损失函数 + 图片分类数据集

Softmax 回归 softmax 回归是机器学习另外一个非常经典且重要的模型,是一个分类问题。 下面先解释一下分类和回归的区别: 简单来说,分类问题从回归的单输出变成了多输出,输出的个数等于类别的个数。 实际上,对于分…

MySQL-存储过程

介绍 基本语法 创建 调用 查看 删除 变量 系统变量 查看 设置 用户定义变量 赋值 使用 局部变量 声明 赋值 流程控制 参数 条件结构 IF case 循环结构 while repeat loop 游标 条件处理程序 介绍 举个简单的例子,我们先select某数据&…

在 Linux(Ubuntu / CentOS 7)上快速搭建我的世界 MineCraft 服务器,并实现远程联机,详细教程

Linux 部署 MineCraft 服务器 详细教程(丐版,无需云服务器) 一、虚拟机 Ubuntu 部署二、下载 Minecraft 服务端三、安装 JRE 21四、安装 MCS manager 面板五、搭建服务器六、本地测试连接七、下载樱花,实现内网穿透,邀…

批量取消 PDF 文档中的所有超链接

在 PDF 文档中我们可以插入各种各样的文本也可以给文本设置字体,颜色等多种样式,同时还可以给文字或者图片添加上超链接,当我们点击超链接之后,就会跳转到对应的网页。有时候这会对我们的阅读或者使用形成一定的干扰,今…

Linux学习笔记(应用篇三)

基于I.MX6ULL-MINI开发板 LED学习GPIO应用编程输入设备 开发板中所有的设备(对象)都会在/sys/devices 体现出来,是 sysfs 文件系统中最重要的目录结构 /sys下的子目录说明/sys/devices这是系统中所有设备存放的目录,也就是系统中…

递归、搜索与回溯第四讲:floodfill算法

递归、搜索与回溯第四讲:floodfill算法 1.Floodfill算法介绍2.图像渲染3.岛屿数量4.岛屿的最大面积5.被围绕的区域6.太平洋大西洋水流问题7.扫雷游戏8.衣橱整理 1.Floodfill算法介绍 2.图像渲染 3.岛屿数量 4.岛屿的最大面积 5.被围绕的区域 6.太平洋大西洋水流问题…

【深度学习与实战】2.3、线性回归模型与梯度下降法先导案例--最小二乘法(向量形式求解)

为了求解损失函数 对 的导数,并利用最小二乘法向量形式求解 的值‌ 这是‌线性回归‌的平方误差损失函数,目标是最小化预测值 与真实值 之间的差距。 ‌损失函数‌: 考虑多个样本的情况,损失函数为所有样本的平方误差之和&a…

气象可视化卫星云图的方式:方法与架构详解

气象卫星云图是气象预报和气候研究的重要数据来源。通过可视化技术,我们可以将卫星云图数据转化为直观的图像或动画,帮助用户更好地理解气象变化。本文将详细介绍卫星云图可视化的方法、架构和代码实现。 一、卫星云图可视化方法 1. 数据获取与预处理 卫星云图数据通常来源…

实现极限网关(INFINI Gateway)配置动态加载

还在停机更新 Gateway 配置,OUT 了。 今天和大家分享一个 Gateway 的功能:动态加载配置(也称热更新或热加载)。 这个功能可以在 Gateway 不停机的情况下更新配置并使之生效。 配置样例如下: path.data: data path.…

Day15 -实例 端口扫描工具 WAF识别工具的使用

一、端口扫描工具 1、zenmap 我这里user是汉字名,没有解析成功。等后续换一个英文账户试一试。 魔改kali的nmap nmap -p8000-9000 8.140.159.19 2、masscan cmd启动,拖入exe文件。然后先写ip,会报错给提示 寻路犬系统 我们去找一下他的…

如何解决高并发场景下的性能瓶颈?实践分享

解决高并发性能瓶颈的核心方法包括优化系统架构、合理使用缓存技术、数据库优化及扩展策略、负载均衡设计。 其中,优化系统架构是根本解决性能问题的关键所在。良好的系统架构能够有效支撑业务高效稳定运行,避免性能瓶颈带来的损失。企业可通过微服务架构…

性能测试、负载测试、压力测试的全面解析

在软件测试领域,性能测试、负载测试和压力测试是评估系统稳定性和可靠性的关键手段。​它们各自关注不同的测试目标和应用场景,理解这些差异对于制定有效的测试策略至关重要。 本文对性能测试、负载测试和压力测试进行深入分析,探讨其定义、…