曹操出行借助 ApsaraMQ for Kafka Serverless 提升效率,成本节省超 20%

本文整理于 2024 年云栖大会主题演讲《云消息队列 ApsaraMQ Serverless 演进》,杭州优行科技有限公司消息中间件负责人王智洋分享 ApsaraMQ for Kafka Serverless 助力曹操出行实现成本优化和效率提升的实践经验。

曹操出行:科技驱动共享出行未来

曹操出行创立于 2015 年 5 月 21 日,是吉利控股集团布局“新能源汽车共享生态”的战略性投资业务,目前已经发展为中国领先的共享出行平台,曹操出行以“科技重塑绿色共享出行”为使命,将全球领先的互联网、车联网、自动驾驶技术以及新能源科技,创新应用于共享出行领域,以“用心服务国民出行”为品牌主张,致力于打造服务口碑最好的出行品牌。

曹操出行的 Kafka 应用实践

曹操出行将 Apache Kafka 应用于在线服务、可观测性、车联网、业务运营数据分析等业务场景。业务流量有明显的波峰波谷,如早晚高峰、节假日、极端天气等,都会导致流量突增。

曹操出行的数据来源广泛,包括 LBS、乘客、司机、新能源、车联网、基础研发等业务线。这些数据,如日志、binlog、链路追踪等,被采集并缓存到 Kafka 中,然后分发给不同的数据系统进行处理。

曹操出行的 Kafka 架构演进

随着业务规模的不断扩大,曹操出行决定将 Kafka 迁移上云,以实现业务效率与成本控制的双重优化。曹操出行从自建 Kafka 迁移到阿里云云消息队列 Kafka 版(ApsaraMQ for Kafka)v3 版本后,不仅实现了效率的显著提升和成本的有效降低,还简化了架构,大幅减轻了运维的复杂性。

下图清晰地展示了曹操出行的 Kafka 架构迁移至云端前后的对比。左侧为迁移前的自建 Kafka 架构,右侧为迁移至阿里云云消息队列 Kafka 版 v3 后的架构。

以下是迁移后架构的主要优化点:

  • 全托管、免运维: 云消息队列 Kafka 版提供全托管服务,基于存算分离架构,实现了计算的无状态化和存储的托管化,从而帮助曹操出行免除了系统级运维的投入,显著提升了运维效率。原先复杂繁琐的运维工作,如集群的部署、升级、扩缩容、topic 迁移、leader rebalance 等操作,现在简化为购买集群、升级集群、集群升配三个主要操作,曹操出行无需感知和参与扩缩容和 topic 迁移的具体过程。

  • 高可用、高可靠: 开源 Kafka 通过 ISR 机制实现服务高可用和数据高可靠,但计算和存储混杂,副本机制复杂度高,问题排查难度大。云消息队列 Kafka 版基于存算分离架构,实现各计算节点无状态且共享存储,不仅降低了复杂度,还提高了可运维性。计算节点高可用基于自研轻量 Leader 切换机制实现,在稳定提供读写服务的同时又能优雅轻便地 Leader 转移,是云消息队列 Kafka 版高效弹缩的核心底座。云消息队列 Kafka 版在存储层面基于阿里云飞天盘古 DFS,支持跨数据中心容灾,提供百微秒级平均延迟、毫秒级长尾延迟,数据可靠性 12个9,可用性 5个9。因此,迁移后的架构可靠性和可用性都得到了显著的提升。

  • 全面的可观测性: 云消息队列 Kafka 版 v3 提供了全面的可观测能力,帮助曹操出行构建了一套全方位的监控告警体系,以确保系统运行的稳定性和问题的响应速度。它不仅提供了曹操出行日常查看和定位业务问题所需的关键指标,如消息的生产消费速度和堆积程度、分区生产和消费倾斜等,还通过自动监控和处理 zk、broker 的负载信息,磁盘使用情况和 topic 分布信息等,简化了曹操出行需要关注的指标,使其能够更专注于业务本身,而无需过多关注底层细节。

ApsaraMQ for Kafka Serverless 助力曹操出行降本提效

随着业务持续增长,曹操出行采用了 ApsaraMQ for Kafka Serverless 系列,凭借其秒级弹性扩展和按需付费的优势,在实现灵活扩缩容的同时,保证了服务的敏捷性和稳定性,并节省了超过 20%  的成本。

具体业务价值包括:

  • 无需系统级运维,提供全托管服务
  • 存算分离架构升级、服务高可用、数据高可靠
  • 兼容开源大数据生态、兼容阿里云特色生态
  • 秒级弹性,灵活扩缩容,成本节省 20% 以上

ApsaraMQ for Kafka 的架构优势

随着云计算的广泛采纳和云基础设施的日益成熟,ApsaraMQ for Kafka 依托于阿里云成熟、强大的基础设施,如云服务器、飞天盘古存储系统、容器服务等经过大规模验证的产品,为系统的整体性能和稳定性提供了坚实的基础。

ApsaraMQ for Kafka 基于存算分离架构,对 Apache Kafka 的存储引擎进行了深度重构,实现了计算节点 Broker 的无状态化,充分利用弹性云存储,从而做到 Kafka 云服务的端到端弹性,实现了真正的 Serverless 架构。其中弹性云存储采用飞天盘古 DFS ,其构建于高性能的分布式存储系统之上,能够支持百万级客户,达到百微秒级平均延迟、毫秒级长尾延迟,并具备多 AZ 强一致多副本数据冗余。Serverless架构为 ApsaraMQ for Kafka 带来低成本、高性能等诸多价值。

在成本方面,由于数据直接写入高可靠的盘古 DFS,计算层 Broker 无流量复制,极大地降低了计算节点的 CPU 和网络带宽消耗,计算成本节约 60% 以上。存储层依赖盘古 DFS 实现高可靠的数据存储,并通过纠删码、冷热分层、基于 CIPU 软硬件协同优化等技术,有效降低了存储成本。同时消息存储数据还能够动态调控转冷比例,转储到对象存储,持续降低存储成本,按量阶梯付费,用得越多越便宜。得益于这套架构,ApsaraMQ for Kafka 相比社区版 Kafka 在支持同等业务规模的场景下,实际使用的资源成本得以数倍降低。

在性能方面,采用 OpenMessaging Benchmark Framework [ 1] 对 ApsaraMQ for Kafka 和 Apache Kafka 3.3 进行了攒批发送与碎片化发送场景下的吞吐延迟对比测试,测试结果显示,在攒批发送与碎片化发送场景下,ApsaraMQ for Kafka 在 TP999 的延迟表现整体均优于 Apache Kafka,并且随着吞吐的增加,这种性能优势更加明显,碎片化发送场景快十倍。

攒批发送,不同吞吐下 TP999 发送延迟对比

攒批发送,不同吞吐下 TP999 端到端延迟对比

碎片化发送,不同吞吐下 TP999 发送延迟对比

碎片化发送,不同吞吐下 TP999 端到端延迟对比

未来展望

曹操出行将与阿里云消息队列团队继续深化合作,共同探索并优化其消息队列架构,以应对日益增长的业务需求及挑战。并通过实际应用场景中的反馈,推动阿里云云消息队列 ApsaraMQ 产品迭代升级,不断完善解决方案,满足更多企业复杂多变的业务需求。

相关链接:

[1] OpenMessaging Benchmark Framework

https://openmessaging.cloud/docs/benchmarks/

点击此处,观看本场直播回放。

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

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

相关文章

(转载)Tools for Learning LLVM TableGen

前提 最近在学习有关llvm的东西,其中TableGen占了一部分,所以想特意学习下TableGen相关的语法。这里找到了LLVM官网的一篇介绍TableGen的博客,学习并使用机器翻译为中文。在文章的最后也添加了一些学习TableGen的资源。 原文地址&#xff1…

vue3uniapp实现自定义拱形底部导航栏,解决首次闪烁问题

前言: 我最初在网上翻阅查找了很多方法,发现大家都是说在page.json中tabbar中添加:"custom": true,即可解决首次闪烁的问题,可是添加了我这边还是会闪烁,因此我这边改变了思路,使用了虚拟页面来解…

【P2-5】ESP8266 WIFI模块在AP模式下作为TCP服务器与多个电脑/手机网络助手(TCP客户端)通信——TCP数据透传

前言:完成ESP8266 WIFI模块在AP模式下作为TCP服务器与多个电脑/手机网络助手(TCP客户端)通信——实现TCP数据透传 AP模式,通俗来说模块可以发出一个WIFI热点提供给电脑/手机连接。 TCP服务端,通俗来说就是模块/单片机作为服务器,可以接收多个客户通道的连接。 本…

Kali Linux 新工具推荐: Sploitscan

在 2024.2 版本 Kali Linux 增加了一个新攻击工具: Sploitscan 1.简介: Sploitscan 能够发现操作系统和应用程序中的安全漏洞。 2.特点: 简单的命令行界面 扫描多个操作系统和应用程序 检测多种漏洞 提供详细信息 可定制性强 3.示例: 2024.2 及以后的版本 Kali Linux…

11.Three.js使用indexeddb前端缓存模型优化前端加载效率

11.Three.js使用indexeddb前端缓存模型优化前端加载效率 1.简述 在使用Three.js做数字孪生应用场景时,我们常常需要用到大量模型或数据。在访问我们的数字孪生应用时,每次刷新都需要从web端进行请求大量的模型数据或其他渲染数据等等,会极大…

基于PyTorch的大语言模型微调指南:Torchtune完整教程与代码示例

近年来,大型语言模型(Large Language Models, LLMs)在自然语言处理(Natural Language Processing, NLP)领域取得了显著进展。这些模型通过在大规模文本数据上进行预训练,能够习得语言的基本特征和语义,从而在各种NLP任务上取得了突破性的表现。为了将预训练的LLM应用于特定领域…

探索Unity:从游戏引擎到元宇宙体验,聚焦内容创作

unity是实时3D互动内容创作和运营平台,包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、…

3、setup语法糖

setup 概述 setup是Vue3中一个新的配置项,值是一个函数,它是 Composition API 组件中所用到的:数据、方法、计算属性、监视......等等,均配置在setup中。 特点如下: setup函数返回的对象中的内容,可直接…

USB协议学习

文章目录 USB发展背景发展变化速度等级通讯接口 四种传输主设备 & 从设备主设备从设备 连接与检测高速设备与主机连接USB总线常见的几种状态 枚举过程特点 控制传输学习资料 USB发展背景 发展变化 USB1.1:规范了USB低全速传输; USB2.0:…

讲讲 kafka 维护消费状态跟踪的方法?

大家好,我是锋哥。今天分享关于【讲讲 kafka 维护消费状态跟踪的方法?】面试题?希望对大家有帮助; 讲讲 kafka 维护消费状态跟踪的方法? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Kafka 中&#x…

【成都新篇】龙信科技电子取证实验室,引领科技取证新时代

文章关键词:电子数据取证实验室、手机取证、介质取证、云取证、现场勘查、电子物证 在科技创新的浪潮中,龙信科技成都实验室以其卓越的电子数据取证服务,成为了中西部地区一颗璀璨的明珠。随着新址的搬迁,我们不仅扩大了业务范围…

linux自动清理管理日志文件 logrotate

logrotate是linux通常会自带的工具,可以自动切割清理日志文件 一、安装(通常无需) 通常系统自带 sudo apt install logrotate或者 sudo dnf install logrotate二、具体使用 以nginx日志为例 1.创建脚本文件 vi /etc/logrotate.d/nginx…

JDBC学习笔记

九月十八: 需要添加jar包到依赖 虽然能驱动了,但是仍然不知道当时为什么不能驱动, 8.0以上会自动驱动, 也就是说只需要做好connection和statement 连接数据库的五种方式: 方式五: Statement: SQL注入小案例: ? 相当于占位符 JDBCUtils: 事务与批处理: String sql "INS…

wps Excel下拉框生成填充及下拉框内容颜色格式修改

一、Excel下拉框生成:(路径:数据-下拉列表) 1、先选中需要插入下拉列表的单元格 2、然后进入“数据-下拉列表”中增加对应的下拉项目(例如:√,X) 二、下拉框选项颜色和字体修改 1、先选中需要修改的下拉列表的所有单元格 2、然…

预约小程序多选修改——思路分享

预约小程序——多选的修改 预约小程序模版的来源:yunzizyy/ZixiAppt: 在这个小程序上做了较多的修改(补充了丢失的代码、二维码签到、惩罚封禁机制、多选时间段和设置日期),其中有一个涉及到了时间段选择中的多选功能的添加&…

PostgreSQL核心揭秘(二)-进程和内存架构

目录 1、进程架构2、进程架构图 3、内存架构 4、内存架构图 PostgreSQL 的进程架构采用了一个多进程的设计,这使其能够有效地管理并发连接和资源。以下是 PostgreSQL 的主要进程架构组成部分的详细描述: 1. 主进程(Postmaster) 功…

pta题目

1.查询至少生产两种不同的计算机(PC或便携式电脑)且机器速度至少为133的厂商 AC: select distinct(pd.maker) --去重查询 from product pd where pd.type in (个人电脑, 便携式电脑) --题目上要求的,至少一个,in是从里面选择 and --这里也是model其实相…

【Effective C++】阅读笔记2

1. 复制对象时要保证复制内容完整性 错误场景复现(没有复制基类部分) 如果一个类中包含多个成员变量或者继承了基类,那么在拷贝构造函数或者赋值运算符中,必须保证所有成员的基类部分被复制。 基类没有被复制,这样就都…

线程基础知识、jmm(Java内存模型)

目录 线程基础知识 并发与并行 进程和线程 线程优先级 创建线程的方式主要有三种 休眠 作出让步 join() 方法 线程协作注意什么 理解线程状态 选择合适的协作工具 共享资源的访问控制 避免竞争条件 创建线程几种方式 线程状态,状态之间切换 新建&…

计算机毕业设计Spark+大模型股票推荐系统 股票预测系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…