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

news/2024/10/1 23:31:49

作者:家泽、稚柳

前言:

在 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 名幸运用户,送出精美礼品!

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

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

相关文章

DNF单机源码架设教程|无需服务器|虚拟机一键搭建

一. 搭建所需要的文件 获取地址:https://githubs.xyz/boot/?app=15 二.搭建步骤 只需一台windows系统,首先需要安装vm虚拟机 目录在vm虚拟机下面 安装完成打开 需要输入激活序列号, 在 VM序列号.txt 里面,16.0的 左上角 文件 打开 选择: 服务端-> DNF Server 7.9 x64.…

elasticsearch之ik分词器和自定义词库实现

ElasticSearch分词器 所谓的分词就是通过tokenizer(分词器)将一个字符串拆分为多个独立的tokens(词元-独立的单词),然后输出为tokens流的过程。 例如"my name is HanMeiMei"这样一个字符串就会被默认的分词器拆分为[my,name,is HanMeiMei].ElasticSearch中提供了很多…

Oracle报错:“Error in invoking target ‘agent nmhs’ of makefile...”

Oracle报错:“Error in invoking target ‘agent nmhs’ of makefile...”前言:Oracle在安装过程中的报错一定要重视,这决定你后续是否能完成安装以及是否能使用。我这边会陆续汇总一些报错现象以及解决方案共享。##Install Product 86%报错信息 :“Error in invoking targ…

VSCode_运行unittest用例:提示文件-test未运行,控制台提示缺少env

如下图:解决方法: a.vscode安装插件:Python Extension Pack。 b.安装成功,重新打开VS Code窗口

从零开始写 Docker(十八)---容器网络实现(下):为容器插上”网线“

本文为从零开始写 Docker 系列第十八篇,利用 linux 下的 Veth、Bridge、iptables 等等相关技术,构建容器网络模型,为容器插上”网线“。完整代码见:https://github.com/lixd/mydocker 欢迎 Star推荐阅读以下文章对 docker 基本实现有一个大致认识:核心原理:深入理解 Dock…

Windows Server 2012 R2部署网站后IIS,只要访问网址应用程序池就自动停止,浏览器页面提示HTTP Error 503. The service is unavailable.

解决方案:1.查看windows日志通过文件资源管理器查看:打开文件资源管理器,找到“我的电脑”。 右键点击“管理”。 在弹出的窗口中,点击“事件查看器”。 在事件查看器中,点击“Windows日志”即可查看各种日志信息   2.找到错误信息3.

C#中使用AutoResetEvent或者ManualResetEvent做线程管理

1. Task/thread/sync/async..await/WhenAll 相关基础知识参见此处链接 2. 什么是AutoResetEvent和ManualResetEvent事件他们都是C#中System.Threading下面的类。用于在多个线程之间进行事件通知和管理。 他们的管理方法主要是三个:Reset():关闭 WaitOne():阻挡 Set():启动A…

ABC357

A link循环加每一个数,加到哪个数不能加了输出前一个数,注意如果加到最后还能加,记得输出\(n\)。点击查看代码 #include<bits/stdc++.h>using namespace std;int n,m; int h[105],sum;signed main(){cin >> n >> m;for(int i = 1;i <= n;++ i)cin >…