AutoMQ:如何基于阿里云计算与存储产品实现云原生架构升级

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 1个月
简介: AutoMQ:如何基于阿里云计算与存储产品实现云原生架构升级

【阅读原文】戳:AutoMQ:如何基于阿里云计算与存储产品实现云原生架构升级

导读:AutoMQ[1]是新一代基于共享存储架构实现的云原生Kafka。得益于其存算分离的共享存储架构,通过和阿里云合作,深度使用阿里云可靠、先进的云服务如对象存储OSS、块存储ESSD、弹性伸缩ESS以及抢占式实例实现了相比Apache Kafka 10倍的成本优势并且提供了自动弹性的能力。

 

引领消息和流存储走向云原生时代,助力客户实现云端业务能力提升是包括阿里云、AutoMQ等在内的每一家云服务提供商的使命。但在具体的项目实践中会发现很多产品虽然宣称自己是云原生的,实际上却并没有对云计算能力的应用产生本质的变化。也有一些产品支持部署到Kubernetes后,就认为自己达到了云原生的阶段。笔者认为真正的云原生产品是要能够深度把云计算原生的能力、弹性的能力和规模化的优势充分利用起来,在成本和效率上都要有数量级的优势。

 

2024年3月,作为阿里云产品生态合作伙伴,AutoMQ与阿里云进行了产品及解决方案的联合发布,并正式上架阿里云云市场进行售卖。本文将盘点 AutoMQ立足于阿里云是如何深度使用计算和存储产品,以及基于这些产品和技术为用户解决什么样的实际问题。

 

一、基于存储服务的成本优化与性能提升

 

1、对象存储OSS

 

海量的数据正在往云端聚集,对象存储已经成为了大数据和数据湖生态事实上的存储引擎,今天大量的数据密集型软件正在从文件API迁移到对象API,以Kafka 为代表的流式数据入湖也是大势所趋。

 

AutoMQ基于对象存储研发了S3Stream[1]流存储库,能够基于Object API提供流式数据的高效的读取和摄入,然后通过存算分离的架构方式将Apache Kafka 的存储层对接至对象存储,充分获得了共享存储带来的技术和成本优势:

 

 OSS同城冗余的标准版存储单价为0.12元/GiB/月,相较于ESSD PL1的单价(1元/1 GiB/月)便宜8倍以上。同时,OSS天然具备多可用区的可用性和持久性,数据无需额外再做复制,使得相比较传统的基于云盘的3副本架构,成本能节省25倍。

 

共享存储架构相比较Shared-Nothing架构,是真正的存算分离,数据跟计算节点无绑定关系。因此,AutoMQ在进行分区移动时无需复制数据,能够做到真正的秒级无损分区迁移。这也是支撑AutoMQ流量实时重平衡和秒级节点水平扩缩容的原子能力。

 

AutoMQ从成本和架构上对OSS提供的能力进行了充分挖掘,但这仅仅是起步,共享存储将为AutoMQ带来丰富的技术和产品创新上的想象力。

 

灾难恢复:作为基础软件,最担心的莫过于集群出现故障后无法继续提供服务,或者数据无法恢复,可能的故障有软件缺陷、机房级故障等。因为有了共享存储,结合简单的元数据快照机制,可以在关闭故障集群后,基于OSS上的数据状态重新打开为一个全新的集群,用于恢复业务。

 

 

跨地域容灾:OSS提供地域间的准实时复制,业务无需自己组建跨地域网络,也无需搭建昂贵的数据Connect集群,结合上述提到的灾难恢复技术,可以很容易0编码实现跨地域容灾的解决方案。

 

共享只读副本:高扇出是消费流式数据的一个重要的业务场景,在一家Data驱动的企业里面,一份数据可能存在数十个订阅方,原集群无法承担数十倍的读取流量。基于OSS,无需数据复制,就可以以共享存储的形式直接从OSS上打开只读副本,提供极具扩展性的高扇出能力。

 

Zero ETL:现代的数据技术栈都在基于对象存储来构建,当数据在同一个存储池,且具备一定的自描述能力后,数据孤岛就能够被低成本打破,不需要构建ETL通道,不同的分析软件或者计算引擎,可以共享来自不同数据源的数据。

 

另一方面,流式数据入湖,现代化数据栈完成了最后一块拼图,流湖一体的架构有了落地的基础,这也是Confluent推出的TableFlow[2]带来的巨大想象力。数据以流的形式产生和存储,符合真实世界中信息不断生成和变化的特征,实时生成的数据一定要以流的形式存在,从而流计算框架有机会挖掘更多实时的价值。当一段时间后数据失去新鲜度后,再转换为Iceberg[3]等表的形态进行存储,做进一步大规模的数据分析。从数据的生命周期来看,从流到表,是非常符合数据从高频变低频,从热变冷的自然特征,在对象存储之上构建流表一体的数据技术栈是未来的趋势。

 

2、块存储ESSD

 

如果说大家仍然将ECS当做物理机来看待,云盘ESSD也有类似的命运。用户对ESSD通常有两类误解:

 

将ESSD类比本地盘,担心数据的持久性,认为坏盘、坏道等专属于物理盘的错误类型仍然会出现。

 

 

认为ESSD是云盘,所以远程写入性能差,延迟不可控,容易抖动。

 

实际上,ESSD背后是一套完整的分布式文件系统,内置了多副本技术,能够提供9个9的数据持久性。用户对物理存储介质的错误完全无需感知,底层系统能自动运维容错数百万块物理盘。

 

同时,ESSD也是共享存储的形态,ESSD卷可以在ECS故障时,挂载至其他节点继续提供读写服务。从这个角度来看,ESSD跟OSS都是共享存储,而非有状态的本地磁盘,这也是AutoMQ声称自己是无状态数据软件的主要原因。

 

在性能方面,ESSD背后有软硬件一体的优化,通过将ESSD客户端卸载到神龙MOC[4]来实现硬件加速,同时与远端服务器之间采用基于RDMA技术的自研高性能网络协议和拥塞控制算法,而非TCP技术栈,以适应数据中心内低延迟和低丢包率的特点。这些优化带来了稳定的IOPS和吞吐性能,以及高度可扩展的存储容量。

 

AutoMQ使用ESSD有三个创新点:

 

可靠性分离,充分利用ESSD背后的多副本技术,避免在应用层引入Raft或者ISR等复制机制,在存储成本,网络复制带宽成本方面都有大幅度降低。

 

将ESSD作为WAL,以裸设备、Direct IO的形式循环写入ESSD,仅用于故障场景下的恢复。得益于ESSD的共享属性,AutoMQ的WAL是一个远程的可共享的WAL,能被集群中的任何节点进行接管恢复。

 

面向云服务的计费项设计,ESSD给任意容量的卷提供至少100 MiB/s左右的吞吐和1800左右的IOPS。AutoMQ仅需要一块最小规格的ESSD卷作为WAL盘,比如一块2GiB的ESSD PL0卷,每月仅需1块钱,即可提供上述性能。如果单机需要更高的存储性能,仅需组合多块小规格的WAL盘即可线性扩展。

 

ESSD和OSS拥有截然不同的存储特征,ESSD是高性能,低延迟和高IOPS的存储介质,但成本高昂,不过AutoMQ找到了一种最经济的使用ESSD的方法。OSS不擅长于高IOPS的场景,它会为每一次IO进行计费,但OSS存储成本低,吞吐和容量近乎“无限地”扩展。OSS作为主存储提供了高吞吐、低成本、高可用、无限扩展的存储能力;ESSD提供了用于存储WAL的持久化、高可用、低延迟的存储能力,并且由于其虚拟化的性质可以申请非常小的存储空间。AutoMQ自研的流存储库S3Stream[1]巧妙地将ESSD和OSS两类共享存储的优势集中到了一起,提供了低延迟、高吞吐、低成本和容量“无限”的的流存储能力。

 

 

1)多重挂载和NVMe协议

 

诚然,ESSD虽说是共享存储,但使用上是块设备的形态,所以要将ESSD高效地共享起来,需要额外的存储技术支撑,即多重挂载和NVMe PR协议。

 

云盘本身支持在卸载后重新挂载到其他节点用于恢复,但当原挂载节点出现ECS Hang等类型的故障时,云盘的卸载耗时比较不可控,所以可以依赖ESSD提供的多重挂载能力,可以做到不进行云盘的卸载,直接多重挂载到另一个ECS节点。

 

以AutoMQ Failover流程为例,当某Broker节点被识别为Failed Broker后,将其上的云盘,多重挂载到健康的Broker进行数据恢复。在进入真正的Recovery 流程前,需要确保原节点没有在持续写入,AutoMQ通过NVMe协议的PR锁对原节点进行IO Fencing。

 

这两个过程均是毫秒级的操作,可以将ESSD在AutoMQ场景下真正地变为共享存储。

 

2)Regional ESSD

 

ESSD背后虽然是多副本架构,但常规的ESSD其多副本是分布在单个AZ内的,这也导致ESSD无法应对AZ级的故障,Regional EBS[5]就是用于解决该问题的。通过将底层的多副本冗余分布在多个AZ内,采用强一致的读写技术,能够容忍单AZ故障。

 

在共享挂载方面,支持Region内ECS跨可用区挂载以及多可用区共享挂载,支持抢占式的IO Fencing和NVMe PR锁形式的IO Fencing。对于Regional ESSD,国外主流云厂商均有对应的产品形态,同时在阿里云上也即将发布,该产品使AutoMQ能够以极低的成本容忍单AZ故障,满足可用性较高的业务场景需求。

 

二、基于计算服务的可用性和弹性能力提升

 

1、云服务器ECS

 

从过去十年的上云历程来看,大部分企业上云的方式是以Rehost的形式进行上云。这里Host的替换实际上就是拿云服务器ECS去替换传统线下的物理主机,但实际上,ECS与线下物理主机的最大区别在于ECS提供了服务SLA,它能借助虚拟化的一些技术规避部分物理主机软硬件故障,对于无法规避的物理主机故障,云服务器也能在宕机后快速在新的物理主机上恢复,缩短业务的受损时长。

 

阿里云单ECS实例承诺的SLA为99.975%,也就是说,在云上以单ECS节点的形式部署一个服务,能做到3个9以上的可用性,这实际上已经是生产可用的,能满足很多业务的可用性要求。以AutoMQ为例,选取一个2C16G的ECS部署一个单节点的AutoMQ集群,就能提供3个9的可用性以及80MiB/s的写入能力,成本可以说是做到了极致。

 

AutoMQ在设计之初就将ECS当成了云服务来看待,而不是物理主机,在ECS出现故障时,更多地依赖ECS节点能快速恢复,比如宕机的时候能自动迁移和自动拉起。只有在失去某个节点连续的数个心跳后,AutoMQ的主动Failover能力才会进行介入。这样设计的考虑点主要有以下两点:

 

对于物理机硬件故障或内核故障问题,ECS能做到宕机后秒级恢复,所以 AutoMQ依赖ECS的快速恢复能力来处理这类故障,同时也避免主动Failover能力过于灵敏带来不必要的容灾处理。

 

当出现ECS宕机、网络分区、甚至AZ级故障时,AutoMQ的Failover能力才会生效,通过ESSD和OSS提供的能力做进一步主动的容灾。

 

2、弹性伸缩ESS

 

在2024的3月份,AutoMQ与阿里云进行了联合发布,正式上架阿里云云市场进行售卖。从AutoMQ内核的GA到快速登陆阿里云市场,这背后有两款产品的助力,第一款是阿里云计算巢,它为服务商提供了标准化的交付流程,另一款就是弹性伸缩ESS。AutoMQ存算分离的架构虽然天然亲和弹性伸缩,但想要提供自动伸缩的能力,也并非易事[6],AutoMQ使用ESS来简化最后一公里的交付之路。

 

AutoMQ在公有云上的交付在Kubernetes和ESS之间选择了ESS,背后主要有几点考虑:

 

AutoMQ推出的第一个产品形态是BYOC,为了简化依赖,避免每个用户在部署 AutoMQ时都需要准备一套K8s集群。

 

 

弹性伸缩ESS具备配置管理、自动弹性伸缩、定时扩缩容、机型管理、多AZ形态、健康检查等能力已经能媲美K8s核心的Deployment能力,ESS可以看作是IaaS层提供的轻量级K8s形态。

 

 

前文提到AutoMQ依赖的多重挂载,Regional ESSD等云厂商提供的新特性,K8s很难第一时间支持。纯粹利用IaaS层的API相较于使用K8s的API,有类似C++语言和Java语言的区别,Native的特性需要在K8s层面进行透出才能使用。

 

当然,K8s是一款非常优秀软件,AutoMQ后续也会支持部署到K8s,特别是在私有云环境,能够屏蔽大量的IaaS层差异。

 

3、抢占式实例

 

弹性的能力并不是云厂商与生俱来的,云厂商为了给客户提供充足的弹性供给,需要承担巨大的保有成本,从而不可避免地导致了云厂商有大量的闲置的计算资源。这部分闲置的资源通过抢占式实例进行售卖,其性能与常规ECS实例无任何区别,相比较按量付费的实例成本最高能节省90%。

 

抢占式实例相比较按量付费实例,有一个重要的特征,就是其价格随供需变化而浮动,比如如果晚上业务对算力的需求小,价格自然就更加便宜。所以,在一定程度上抢占式实例的定价包含了时间的维度,如果所有的用户都能将抢占式实例用起来,自然就会被价格所调节,会促使大家为自己的工作负载选择最合适的运行时间段。比如,AutoMQ会在晚上运行一些大规模的测试用例,通过使用抢占式实例,大幅度降低测试的成本。

 

另一个特征,抢占式实例会被随时中断回收,这确实为使用它带来了很高的门槛。但AutoMQ推出的存算分离架构,使得Broker节点无任何本地状态,能够从容应对抢占式实例被回收的情形。下图演示了AutoMQ在抢占式实例回收时通过ESSD API完成WAL恢复的流程。AutoMQ能达到十倍降本的效果,抢占式实例在计算降本的维度起到了重要的作用。

 

 

结束语

 

今天,基础软件的大半壁江山,大都诞生于10年前,它们高效地支撑了大数据和互联网的快速发展。但面向IDC环境设计的基础软件,在云计算成熟的今天来看,并不是那么的高效和低成本,今天大量的基础软件在基于云重新设计,比如可观测性存储组件、TP和AP数据库、数据湖软件等。Kafka作为重要的流存储软件,在大数据生态系统中占据了举足轻重的位置,在数据驱动型企业的整个IT支出中占比10%~20%,基于云原生的能力重新设计Kafka,为企业降本增效,在当前降本的大背景下,有重大的意义。AutoMQ通过深度用云,以云原生的能力重构了Apache Kafka,创造了10倍的成本优势。相较于Kafka,AutoMQ的共享存储架构使得在分区迁移、节点动态扩缩容、流量自动重平衡等运维方面的耗时指标得到了数百倍的优化。

 

周新宇,AutoMQ联合创始人&CTO,是Apache软件基金会成员,Apache RocketMQ联合创始人&PMC成员。有近十年的云计算从业经历,完整经历了阿里云中间件上云历程,是云原生上云理念的倡导者。

 

引用

 

1. 开源的云原生版 Kafka——AutoMQ:https://github.com/AutoMQ/automq

2. Confluent 全新发布 Tableflow,统一流和分析型计算:https://www.confluent.io/blog/introducing-tableflow/

3. 开放表格式 Iceberg 官网:https://iceberg.apache.org/

4. 阿里云自研神龙架构:https://developer.aliyun.com/article/743920

5. 2023云栖大会抢先发布Regional ESSD:https://developer.aliyun.com/article/1390447

6. 为什么公共云的弹性能力很难被发挥出来?https://www.infoq.cn/article/tugbtfhemdiqlxm1x63y

 


我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。

欢迎关注 “阿里云基础设施”同名微信微博知乎

获取关于我们的更多信息~

相关文章
|
5月前
|
存储 调度 C++
16 倍性能提升,成本降低 98%! 解读 SLS 向量索引架构升级改造
大规模数据如何进行语义检索? 当前 SLS 已经支持一站式的语义检索功能,能够用于 RAG、Memory、语义聚类、多模态数据等各种场景的应用。本文分享了 SLS 在语义检索功能上,对模型推理和部署、构建流水线等流程的优化,最终带给用户更高性能和更低成本的针对大规模数据的语义索引功能。
517 53
|
6月前
|
人工智能 Cloud Native 安全
解读阿里云刚发布的《AI 原生应用架构白皮书》
阿里云在云栖大会重磅发布了《AI 原生应用架构白皮书》,该白皮书覆盖 AI 原生应用的 11 大关键要素,获得业界 15 位专家联名推荐,来自 40 多位一线工程师实践心得,全书合计超 20w 字,分为 11 章,全面、系统地解构 AI 原生应用架构,包含了 AI 原生应用的 11 大关键要素,模型、框架、提示词、RAG、记忆、工具、网关、运行时、可观测、评估和安全。本文整理自阿里云智能技术专家李艳林在云栖大会现场的解读。
2566 70
|
5月前
|
存储 SQL 消息中间件
从 ClickHouse 到 StarRocks 存算分离: 携程 UBT 架构升级实践
查询性能实现从秒级到毫秒级的跨越式提升
|
6月前
|
人工智能 缓存 安全
阿里云发布《AI 原生应用架构白皮书》
阿里云联合阿里巴巴爱橙科技,共同发布《AI 原生应用架构白皮书》,围绕 AI 原生应用的 DevOps 全生命周期,从架构设计、技术选型、工程实践到运维优化,对概念和重难点进行系统的拆解,并尝试提供一些解题思路。白皮书覆盖 AI 原生应用的 11 大关键要素,获得 15 位业界专家联名推荐,来自 40 多位一线工程师实践心的,全书合计超 20w 字,分为 11 章。
3580 59
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
34_GPT系列:从1到5的架构升级_深度解析
大型语言模型(LLM)的发展历程中,OpenAI的GPT系列无疑扮演着至关重要的角色。自2018年GPT-1问世以来,每一代GPT模型都在架构设计、预训练策略和性能表现上实现了质的飞跃。本专题将深入剖析GPT系列从1.17亿参数到能够处理百万级token上下文的技术演进,特别关注2025年8月8日发布的GPT-5如何引领大模型技术迈向通用人工智能(AGI)的重要一步。
650 2
|
5月前
|
人工智能 缓存 安全
阿里云发布《AI 原生应用架构白皮书》!
阿里云联合爱橙科技发布《AI原生应用架构白皮书》,系统解析AI应用在架构设计、开发运维中的关键挑战与解决方案,涵盖大模型、Agent、RAG、安全等11大核心要素,助力企业构建稳定、高效、可控的AI应用体系。
阿里云发布《AI 原生应用架构白皮书》!
|
6月前
|
存储 JSON 数据处理
ClkLog埋点与用户行为分析系统:架构升级与性能全面提升
随着越来越多企业在实际业务中使用 ClkLog,数据规模和分析需求也不断提升,部分用户日活已经超过10万,为了顺应这一趋势,ClkLog 秉持 “开放透明、持续演进”的理念,推出了迄今为止最重要的一次性能优化升级。新版本在大规模数据处理与复杂查询场景中,性能表现实现了跨越式提升。经过多轮研发与严格测试,新版本现已正式上线:在原有付费版 1.0 的基础上架构全面升级,并同步发布全新的 2.0 版本。为用户带来更强的性能与更广的适用场景。
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
531 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式