云消息队列 ApsaraMQ 成本治理实践(文末附好礼)

作者:家泽、稚柳

前言:

在 AI 原生应用架构浪潮中,消息队列需支持大规模数据和复杂 AI 模型训练与推理场景下的高效异步通信,其成本效益优化也日益受到重视。面对大模型或大数据量,消息量显著增加,云消息队列 ApsaraMQ 致力于降低消息队列成本,减轻用户负担,同时,通过架构演进,提升数据处理能力、安全性、性能和资源利用率,让 AI 开发者在更低的成本下获得更高的效益。

背景

云消息队列 ApsaraMQ 始终围绕“高弹性低成本、更稳定更安全、智能化免运维”三大核心方向进行演进和拓展。在追求“高弹性低成本”方面,云消息队列 ApsaraMQ 全系列产品(涵盖云消息队列 RocketMQ、Kafka、RabbitMQ、MQTT 以及消息服务 MNS)均已实现 Serverless 化,支持自适应弹性,秒级万 QPS 弹性扩展,并采用按实际使用量付费的模式,实例成本平均降低 50%。

本文将探讨云消息队列 ApsaraMQ 在成本治理方面的实践经验,同时介绍在 Serverless 版本中的架构优化和新增能力。希望能够为企业或个人提供成本控制参考,同时帮助大家更好地理解和使用云消息队列 ApsaraMQ,以实现成本效益最大化。

资源成本与运维成本相辅相成

在软件研发过程中,除了考虑产品迭代的开发成本及运营成本之外,运行时成本主要由资源成本和运维成本组成,两者相辅相成。

  • 要降低资源成本,通常需要对现有架构进行调整。而确保架构变更的安全性和稳定性,则需要依赖完善的运维体系,包括有效的监控和快速恢复机制。
  • 引入监控和告警系统提高系统可靠性,可能会增加核心组件的资源开销,以及影响产品性能。但若没有完善的运维体系,在系统出现问题时,会导致更大的业务损失。

因此,我们应重视运维体系的建设,在降低成本的同时,确保系统的稳定性和可靠性。这需要我们在资源利用和运维管理之间找到平衡,以实现成本效益的最大化。

图片

为了有效降低资源和运维成本,同时提高系统性能和稳定性、优化运维效率,我们采取了以下有效策略:

  1. 降低资源成本:

    • 提升软件性能:优化产品软件,增强自身性能,从而提高运行效率,减少资源占用。
    • 降低资源消耗:通过技术手段,选择性价比更高的产品依赖,提高资源使用效率。
    • 提高资源利用率:与运维团队合作,监控资源利用率,确保与系统稳定性相匹配。
  2. 降低运维成本:

    • 监控告警指标覆盖:建立完善的指标体系,全面反映系统运行状况,确保性能提升和架构优化达到预期效果。
    • 快速恢复:优化 MTTR,依赖于强大的监控系统和自动化恢复能力,缩短故障发现时间和故障解决时间。
    • 无损升级:实现无感知升级,降低用户升级成本,在不中断服务、不干扰客户使用的情况下进行升级。
    • 弹性伸缩:加强云服务底层组件弹性伸缩能力,根据并发请求和元数据用量动态调整资源,有效控制成本,提高资源利用率。

架构优化,提升产品性能降低资源消耗

以 Kafka 为例,开源 Kafka 是典型存算一体架构,通常基于本地文件系统或本地盘自建,存在一定的局限性:

1)单盘性能瓶颈: 单盘的吞吐量和容量受限,形成性能瓶颈。

2)资源灵活性差: 存储和计算资源比例固定,不能灵活调整适配。

3)扩缩容耗时长: 节点是有状态的,扩缩容需要涉及数据迁移,但受原始节点负载、数据量和磁盘吞吐等因素影响,TB 级数据通常需要小时级迁移时长,导致整体风险提高,运维压力大。

4)存储架构复杂: 对象存储用于存储冷数据,本地盘存储热数据,而本地盘需要多副本保证数据可靠性,从而增加网络资源消耗,同时,需要实现本地存储文件和二级存储文件之间的逻辑映射机制,增加了系统复杂度。

图片

上图是 Kafka 3.0 的架构,从技术层面实现存算分离,在计算层做到了无状态,通过开源 ISR 机制进行主从选举,同时引入 RDMA 协议,显著减少整个系统在交互过程中的 CPU 消耗;存储层采用盘古 DFS 作为共享存储,消息数据(CheckPoint 和 index 文件依然写入分布式文件系统)写入盘古 DFS 保证可靠性。

此外,还从以下几个方面进行了存储结构优化:

  • 内存聚批: 支持时间、空间和频率等多种提交策略;减少网络抖动、长尾影响服务质量。
  • 用户态缓存: 支持多级缓存机制,数据就近加速;冷热数据分离,避免缓存污染。
  • 冷读优化: 冷热线程(协程)分离,避免全局不可用;数据预加载、预读,自适应调整 IO 大小。

性能测试数据显示,优化后的 Kafka 3.0 在攒批和碎片化发送场景,性能均优于开源版本。

资源消耗方面,Kafka 3.0 通过存算分离设计,简化架构,降低资源成本。仅需一份存储资源即可确保数据可靠性,整体存储成本降低约 30%。

图片

软硬结合,进一步提升产品性能

云消息队列 ApsaraMQ 通过与云原生芯片倚天进行了深度优化,进一步提升了产品性能。

为了充分发挥倚天芯片的优势,我们在消息收发链路上引入了自动聚合器,通过批量计算提高效率。在消息序列化方面,我们采用了更紧凑的数据结构,减少了数据复制和传输开销。同时,我们将序列化过程拆分为多个子任务并行执行,充分利用倚天芯片的多核处理能力和 ARM 指令集优化。

通过这些针对性的优化措施,最终实现了在相同机型和流量条件下,倚天芯片的消息延迟比 X86 架构降低了 20%,消息吞吐量提高了 30%。

增强运维能力,降低运维成本

为了提高运维效率、降低运维成本,同时确保系统的稳定性和可靠性,我们提供了以下增强能力:

监控体系建设: 通过监控关键性能指标来优化资源使用和控制成本。云消息队列 ApsaraMQ 覆盖了全面的监控和告警指标,帮助用户了解资源使用情况并调整资源分配,包括物理节点、网络、磁盘、IO 等操作系统指标监控,以及消息收发量、RPC 异常次数、消息堆积等业务指标监控。同时,引入端到端巡检,模拟用户收发 SDK 主要接口行为,实时发现系统异常,分钟级探测感知和报警。

消息健康管家: ApsaraMQ Copilot for RocketMQ 提供全链路健康度智能巡检与诊断的先进功能,成为构建高效消息集成链路的重要工具。通过全面监控、量化分析与配置可定制性、简化诊断流程等关键操作,全面升级其监控和诊断能力。

无损升级: RocketMQ 5.2.0 版本新增服务端升级时主动通知客户端的功能,实现优雅下线。客户端接收通知后自动重连到未升级节点并重试上次发送的消息,从而保障业务连续性。

弹性伸缩: 弹性伸缩是 ApsaraMQ Serverless 版本的核心功能,适用于业务量波动较大的场景,通过监控业务流量、集群水位和资源剩余量,自动进行垂直或水平扩展,或在集群实例间进行弹性调度。目前已达到秒级万 QPS 弹性扩展,满足大规模业务需求。


好礼放送

  1. 阿里云 618 创新加速季正在火热进行中,为企业提供丰富的补贴和礼包,助力数字化创新。云消息队列 ApsaraMQ 也带来了精选产品的折扣优惠和资源包。

欢迎访问活动页面,了解更多详情:https://www.aliyun.com/activity/Mid-promotion/NativeCloud618

图片

  1. 随着云消息队列 ApsaraMQ 产品品牌升级(https://www.aliyun.com/product/ons ),我们正在开展有奖调研活动,收集用户对"ApsaraMQ"产品品牌的宝贵意见。

欢迎点击“此处”进行参与,我们将从参与者中随机抽取 5 名幸运用户,送出精美礼品!

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

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

相关文章

利用python爬虫采集苹果公司各产品销售收入统计报告

数据为2013年到2022年苹果公司各产品(iPhone、iPad、Mac等)及服务的销售收入。iPhone是苹果公司销售收入最高的产品。 数据统计单位为:亿美元 。 数据说明: 数据整理自苹果公司历年10-K文件,每年10-K文件可能对之前年…

构建企业核心竞争力:拥有自主大模型,引领行业未来

前言 随着人工智能技术的飞速发展,大模型技术已经成为推动行业进步的重要力量。在这个变革的时代,作为一位具有前瞻性的企业家,您深知拥有自主大模型对于提升公司竞争力、引领行业未来的重要性。本文将为您详细介绍大模型的市场现状以及企业…

SpringBoot的Mybatis-plus实战之基础知识

文章目录 MybatisPlus 介绍一、MyBatisPlus 集成步骤第一步、引入依赖第二步、定义mapper 二、注解TableNameTableldTableField 三、配置文件四、加解密实现步骤 在SpringBoot项目中使用Mybatis-plus,记录下来,方便备查。 MybatisPlus 介绍 为简化开发而…

亚信科技&用友,助力四川腾翔打通数据壁垒,跑出转型加速度

近日,亚信科技携手用友依托“AntDBU8C”联合产品,助力四川腾翔人力资源管理有限公司(以下简称:腾翔)打通“人力资源”与“财务”两大业务系统,实现高水平的数据互通、共享和应用,助力业务降本增…

【python】 pandas.DataFrame.to_json 函数

【python】 pandas.DataFrame.to_json 函数 写在最前面一、什么是 JSON?【性能对比】python读取json和直接从orcle数据库读,哪个更快?性能对比适用场景综合考虑 二、to_json 函数概述参数详解1. path_or_buf2. orient4. double_precision5. f…

基于开源模型搭建Agent系统教程

一篇非常基础非常基础的Agent博客 大型语言模型(LLMs)经过causal language modeling训练后,可以处理各种任务,但它们通常在逻辑、计算和搜索等基本任务上表现不佳。最糟糕的情况是,它们在某个领域(如数学&…

MT2093 活动安排

贪心策略&#xff1a; 每次选择结束时间最早的活动 代码&#xff1a; #include <bits/stdc.h> using namespace std; const int N 5e5 10; int n; struct pp {int a, b; } p[N]; bool cmp(pp x, pp y) {return x.b < y.b; } int ans 0;int main() {cin >>…

KafkaQ - 好用的 Kafka Linux 命令行可视化工具

鉴于并没有在网上找到比较好的linux平台的kafka可视化工具&#xff0c;今天为大家介绍一下自己开发的在 Linux 平台上使用的可视化工具KafkaQ 虽然简陋&#xff0c;主要可以实现下面的这些功能&#xff1a; 1&#xff09;查看当前topic的分片数量和副本数量 2&#xff09;查…

实战计算机网络02——物理层

实战计算机网络02——物理层 1、物理层实现的功能2、数据与信号2.1 数据通信模型2.2 通信领域常用术语2.3 模拟信号和数字信号 3、信道和调制3.1 信道3.2 单工通信、半双工通信、全双工通信3.3 调制3.4 奈式准则3.5 香农定律 4、传输媒体4.1 导向传输媒体4.2 非导向传输媒体 5、…

JEPaaS 低代码平台 j_spring_security_check SQL注入漏洞复现

0x01 产品简介 JEPaaS是一款优秀的软件平台产品,可视化开发环境,低代码拖拽式配置开发,操作极其简单,可以帮助解决Java项目80%的重复工作,让开发更多关注业务逻辑,大大提高开发效率,能帮助公司大幅节省人力成本和时间成本,同时又不失灵活性。适用于搭建 OA、ERP、CRM、…

ONNX2NCNN工具

最近部署很多onnx转ncnn的操作&#xff0c;发现还是需要有页面操作会比较好&#xff0c;而且需要查询onnx的图&#xff0c;所以写了一个工具来搭配使用 建议搭配Netron 来使用 打开模型 选择打开-》选择onnx模型 显示基础信息 查询onnx模型图 展示信息 点击“展示信息”&…

喜讯!云起无垠入选《2024中国AI大模型产业图谱1.0版》

近日&#xff0c;数据猿与上海大数据联盟联合策划并启动了“2024全年度三大策划活动”&#xff0c;经过数月的精心筹备和严格筛选&#xff0c;通过直接申报交流、深入访谈调研、外部咨询评价以及匿名访谈等多维度交叉验证的方式&#xff0c;最终完成了《2024中国AI大模型产业图…

不同进制数之间的相互转换(全面解析版)

目录 前言 1.不同进制的表示方法 2.不同进制之间的对照 3.二进制数转换为其他进制数 3.1二进制数转换为八进制数 3.2任意进制数转换为十进制数 3.3二进制数转换为十六进制数 4.其他进制数转换为二进制数 4.1八进制数转换为二进制数 4.2十进制数转换为任意进制数 4.3十…

ESP-IDF OTA升级过程中遇到的“esp_transport_read returned:-1 and errno:128”问题(1)

在笔者“ESP32-C3模组上跑通OTA升级”系列文章中,经过了一番“踩坑填坑”的过程,最终实现了OTA升级功能。每次升级都能够成功,比较稳定。 但是,当笔者添加大量业务代码(如使能蓝牙配置),使得固件的大小由之前的200~300K字节变为1.5~1.6M字节后,再次执行升级时(同样的…

x64-linux下在vscode使用vcpkg

1.使用vscode远程连接上对应的linux &#xff0c;或者直接在图形化界面上使用。 2.安装vcpkg 插件&#xff0c;然后打开插件设置。 注意&#xff1a;defalut和host的主机一定和你自己的主机一致&#xff0c;且必须符合vcpkg三元组格式&#xff0c;其中你可以选择工作台的设置&a…

编写函数isprime(int a),用来判断自变量a是否为素数,若是素数,函数返回整数1,否则返回0

int main() {int isprime(int x);int x;printf("请输入一个数\n");scanf("%d", &x);if (isprime(x)){printf("%d是素数\n",x);}else{printf("%d不是素数\n",x);} } int isprime(int a) {int i;for (i 2; i < a / 2; i){if (a%…

法考报名必看,99%高过审率证件照片电子版制作技巧

在2024年&#xff0c;法考备战已经如火如荼进行中&#xff0c;作为进入法律行业的第一步&#xff0c;参加法考的重要性不言而喻。而作为报名过程中必不可少的一环&#xff0c;报名照片要求以及证件照制作技巧更是需要我们特别重视的部分。想要在这个过程中顺利通过审核&#xf…

vue3中用setup写的数据,不能动态渲染(非响应式)解决办法

相比于2.0&#xff0c;vue3.0在新增了一个setup函数&#xff0c;我们在setup中可以写数据也可以写方法&#xff0c;就像我们以前最开始学习js一样&#xff0c;在js文件中写代码。 For instance <template><div class"person"><h2>姓名&#xff1…

必刷!!软考【系统分析师】100道高频考题(含知识点解析),轻松45+

2024上软考已经圆满结束&#xff0c;距离下半年的考试也只剩下半年不到的时间。需要备考下半年软考系分的小伙伴们可以抓紧开始准备了&#xff0c;毕竟高级科目的难度可是不低的。 今天给大家整理了——系统分析师100道高频考题 &#xff0c;都是核心重点&#xff0c;有PDF&…

音频处理1_基本概念

AI变声和音乐创作的基础 声音本质上是人类可察觉范围内的气压周期性波动, 即声波 声波是一种连续信号&#xff0c;在任意时间内的声音信号有无数个取值。对于只能读取有限长数组计算机来说&#xff0c;我们需要将连续的声音信号转换为一个离散的序列&#xff0c;即数字化表示。…