降本增效|云原生数仓AnalyticDB MySQL的Serverless弹性技术解析

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 如今,全球经济增长放缓、市场需求疲软,企业加强数字化建设提高运营效率是降低成本的有效手段,在这样的背景下云原生数仓AnalyticDB MySQL湖仓版(以下简称ADB MySQL)可以做到弹性按需的使用。

作者信息李伟(花名:沐远), 云原生数据仓库AnalyticDB MySQL核心研发人员,10年数据仓库、数据湖、大数据、云原生研发经验,目前专注于数据仓库的云原生及Serverless弹性。


背景


如今,全球经济增长放缓、市场需求疲软,企业加强数字化建设提高运营效率是降低成本的有效手段,在这样的背景下云原生数仓AnalyticDB MySQL湖仓版(以下简称ADB MySQL)可以做到弹性按需的使用。


下面是湖仓版的产品大图,橙色部分是「湖仓版」相对于「数仓版」新增的功能,灰色部分是「湖仓版」相对于「数仓版」迭代升级的功能。

1.JPG


1.Serverless弹性的价值及挑战


Serverless的定义

Serverless相比serverful,有以下3个改变(来自 Berkeley 的总结 [1]

资源的解耦:弱化了存储和计算之间的联系。服务的储存和计算被分开部署,存储不再是服务本身的一部分,而是演变成了独立的服务,这使得计算变得无状态化,更容易调度和扩缩容。

 自动弹性伸缩:代码的执行不再需要手动分配资源。不需要为服务的运行指定需要的资源(比如使用几台机器、多大的带宽、多大的磁盘等),只需要提供一份代码,剩下的交由Serverless平台处理。

 按使用量计费:Serverless按照服务的使用量(调用次数、时长、归一化资源等)计费,而不是像传统的serverful服务那样,按照使用的资源(ECS实例、VM的规格等)计费。

Serverless弹性的价值

你在使用云原生数仓服务的时候,是否遇到过下面问题并期望服务方能够帮忙你解决呢?

Case 1:业务的混合SQL负载包含短查询和离线ETL, 当离线ETL运行的时候影响短查询的响应时间

Case 2:为了能够运行一个大的离线SQL,对实例进行了扩容,当离线SQL不运行的时候实例的资源浪费

Case 3:在线负载高峰期需要人肉去进行实例的扩容,手忙脚乱

Case 4:紧急情况扩容实例应对负载提高,遇到底层资源不足,扩容失败

Case 5:实例弹性效率低,启动时间相比业务资源使用时间难以忽略

......

这些问题以及更多和Serverless弹性相关的业务问题,ADB MySQL团队都在持续关注,并通过技术的产品化能力来帮助企业建设具有更好Serverless 弹性能力的数字基础设施。

Serverless弹性的挑战

通过Serverless弹性帮助用户解决上面的问题,在调度、成本、库存、弹性效率等服务上,对ADB MySQL也有相应的挑战。比如:

 库存供给:对于大规模的弹性需求是否有足够的资源能够支撑

 负载解耦:对于同实例的SQL怎么智能识别在线&离线的SQL并进行解耦

 离线弹性:当负载解耦后,如何将常驻实例资源配额让离线计算按需使用

 在线弹性:在线弹性如何智能的感知负载变化进行弹性

 弹性效率:弹性效率怎么降低弹性本身的时间开销及成本


这些挑战ADB MySQL已经逐步解决,我们也期望将技术分享出来,让大家更好的使用ADB MySQL相关产品能力来满足业务需求。


2.Serverless弹性的架构


为了提供Serverless弹性的产品能力,在架构上需要有两方面的基础建设,包括细粒度的弹性单位定义、引擎&资源调度&资源库存端到端的池化调度架构。

ACU归一化的资源定义

引入了“1ACU约等于1Core 4GB”的归一化资源定义,来度量计算弹性资源的使用量。1ACU的资源单元较小,可以较好支撑ADB MySQL做到最细粒度的弹性,帮助用户将成本降低到极致。

端到端的池化调度架构

当要满足弹性的库存保障、弹性效率、细粒度资源弹性的需求,传统基于ECS来独占部署的架构难以支撑。ADB MySQL在构建弹性能力的湖仓版本中,资源调度基于ACK/K8s来构建,同时资源池使用两级库存(固定+弹性)。整体的架构可以分为三层:

 引擎调度层:不同引擎的弹性资源编排,比如离线计算的按需弹性、在线计算的分时弹性资源申请等;

 统一调度层:基于ACK/K8s的能力,构建多引擎的混部调度,同时管理包括存储、计算、网络基础设施;

 弹性库存调度:用来管理固定资源池、弹性资源池的两级资源池,从而保障弹性过程中的资源供给,以及弹性效率的优化。

2.JPG

3.Serverless弹性的技术解析


从产品能力来看,ADB MySQL弹性技术建设包括弹得起(两级库存保障)、弹得快(弹性效率高)、弹得准(贴合业务不浪费)。

弹得起-池化弹性库存供给技术

不管是离线负载的Query弹性,还是在线实例级别节点的弹性,都需要有库存的保障。如果囤一批机器来满足弹性需求,当用户资源缩容的时候,会给ADB MySQL服务带来巨大的库存成本负担。为了既满足在离线的弹性资源供给,同时最小化ADB MySQL的成本,构建了基于画像运营的两级弹性库存供给能力。

 资源需求:从用户查询负载转化过来的资源需求,包括定时弹性、自动弹性两种模式;

 库存运营:库存包括固定池、弹性池两部分,其中固定池的库存供给周期在0.5天-15天,提供更好的弹性效率且库存可估计;弹性池的库存供给周期在7s-180s级别,成本较高且库存不可估计。库存运营模块通过不同资源的库存水位画像进行预测,从而来决策不同资源的购买释放数量;

 库存供给:在接收到库存运营的资源需求后,库存供给模块会选择合适的神龙、ECS、ECI机型来满足资源需求,这里会考虑机型本身的库存、不同机型的组合、机型的性价比等因素。

3.JPG

弹得快-池化弹性效率优化技术

支持负载的弹性除了库存供给技术外,另外一个重要技术是弹性效率。如果启动一个离线Query的资源需要10分钟,这样的效率会影响用户体验,且会有较大的额外成本。在ADB MySQL的离线Query按需启动资源的模式下,可以做到1200ACU规模的Query,弹性时间仅在10s左右。达到这样的效率,ADB MySQL团队做了从Query执行模型、Pod的存储、Pod的网络等端到端的优化。

 Master Pod缓存池:一条Query执行需要一个Master Pod及若干个Executor Pod,Master Pod启动是前置的时间开销,多个Executor Pod是可以并发启动。为了降低启动Master Pod的开销,我们做了Master Pod的缓存池,从而将这部分的启动开销降低到100ms级别;

 Cache 盘缓存池:ADB MySQL的Executor Pod在执行过程中,会生成Spill、shuffle等数据存储到Pod的Cache盘中,如果Cache盘按需去挂载云盘链路上调用云盘服务开销较大。我们在固定池的节点上面构建了Cache盘的缓存池,Pod启动时候挂盘的开销降低到0.5s左右;

 网卡缓存池:ADB MySQL的执行Pod的网络使用的是云原生的ENI方案,按需挂载会调用VPC服务开销较大,我们在固定池的节点上面构建了ENI的缓存池,网卡的挂载时间降低到0.5s左右。

4.JPG

弹得准-贴合业务负载按需弹性技术

在线负载按需弹性技术

离在线负载解耦后,离线负载可以按Query进行极致的资源弹性,但在线的Query对RT要求比较高,更加适合通过实例节点弹性来满足负载的变化。ADB MySQL在线负载的按需弹性通过构建负载感知-> 库存供给-> 实例弹性的闭环反馈链路来做到自动弹性。

 负载感知:包含用户设定定时弹性规则(已经产品化)、ADB Workload Manager自感知业务负载进行弹性(研发中)两种模式;

 库存供给:负载感知模块生成具体资源扩缩的需求后,库存供给模块会提前或者实时的准备资源;

 实例弹性:当资源准备好后,实例弹性模块进行实例的扩缩容,支持业务负载感知对资源的需求。

5.JPG

离线负载解耦按需弹性技术

在使用ADB MySQL的时候,混部负载场景既有在线分析,也会有ETL离线分析,“离在线负载不解耦”的架构下在线查询和离线分析的执行task会混用计算节点,这样会出现两个问题:

 离线影响在线负载稳定性:当离线跑起来的时候,离线task的cpu等资源消耗较大,而在线的task对于节点的抖动比较敏感,出现在线业务抖动的问题;

 成本高:为了保证离线Query运行的时候有足够的资源,就需要提前启动常驻资源,当离线Query运行完成后,这些资源会空跑,用户需要承担这些空跑的成本。


为了解决这样的问题,ADB MySQL支持了离线Query级别的弹性资源供给。离线Query需要的资源和在线资源完全隔离,在线负载不受影响;离线Query的资源按需申请使用,用户不需要承担资源空跑的成本。

6.JPG

目前ADB MySQL具备了上面四块支持Serverless 弹性的基础技术能力,未来会在更智能、更快、更省钱等方面持续加强技术建设。


4.Serverless弹性效果及最佳实践


基于上面的技术,ADB MySQL的Serverless 弹性可以带来如下的效果:

 负载感知:支持按规则和按负载弹性伸缩;

 计费:支持分钟级计费,批处理任务提供SQL作业级别计费信息;

 成本:支持按量计费,使用成本比预留最高可降低80%

 弹性能力:单计算任务支持0~10000个ACU范围秒级弹性扩展;


AnalyticDB MySQL湖仓版已于11月1日正式开放公测,对于低成本离线处理ETL有需求,同时又需要使用高性能在线分析支撑BI报表/交互式查询/APP应用的用户,欢迎点击文末「阅读原文」进行公测申请


引用

[1] The Berkeley Paper:https://www2.eecs.berkeley.edu/Pubs/TechRpts/2019/EECS-2019-3.pdf


 / End /  

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
18天前
|
存储 Cloud Native 块存储
EBS深度解析:云原生时代企业级块存储
企业上云的策略,从 Cloud-Hosting 转向 Serverless 架构。块存储作为企业应用上云的核心存储产品,将通过 Serverless 化来加速新的计算范式全面落地。在本话题中,我们将会介绍阿里云块存储企业级能力的创新,深入解析背后的技术细节,分享对未来趋势的判断。
|
20天前
|
Kubernetes Cloud Native 云计算
云原生技术深度解析:重塑企业IT架构的未来####
本文深入探讨了云原生技术的核心理念、关键技术组件及其对企业IT架构转型的深远影响。通过剖析Kubernetes、微服务、容器化等核心技术,本文揭示了云原生如何提升应用的灵活性、可扩展性和可维护性,助力企业在数字化转型中保持领先地位。 ####
|
21天前
|
运维 Kubernetes Cloud Native
Kubernetes云原生架构深度解析与实践指南####
本文深入探讨了Kubernetes作为领先的云原生应用编排平台,其设计理念、核心组件及高级特性。通过剖析Kubernetes的工作原理,结合具体案例分析,为读者呈现如何在实际项目中高效部署、管理和扩展容器化应用的策略与技巧。文章还涵盖了服务发现、负载均衡、配置管理、自动化伸缩等关键议题,旨在帮助开发者和运维人员掌握利用Kubernetes构建健壮、可伸缩的云原生生态系统的能力。 ####
|
26天前
|
Kubernetes Cloud Native 调度
云原生批量任务编排引擎Argo Workflows发布3.6,一文解析关键新特性
Argo Workflows是CNCF毕业项目,最受欢迎的云原生工作流引擎,专为Kubernetes上编排批量任务而设计,本文主要对最新发布的Argo Workflows 3.6版本的关键新特性做一个深入的解析。
|
28天前
|
监控 Cloud Native 持续交付
云原生技术深度解析:重塑现代应用开发与部署范式####
本文深入探讨了云原生技术的核心概念、关键技术组件及其在现代软件开发中的重要性。通过剖析容器化、微服务架构、持续集成/持续部署(CI/CD)等关键技术,本文旨在揭示云原生技术如何促进应用的敏捷性、可扩展性和高可用性,进而推动企业数字化转型进程。不同于传统摘要仅概述内容要点,本部分将融入具体案例分析,直观展示云原生技术在实际应用中的显著成效与挑战应对策略,为读者提供更加丰富、立体的理解视角。 ####
|
2月前
|
人工智能 Cloud Native Java
云原生技术深度解析:从IO优化到AI处理
【10月更文挑战第24天】在当今数字化时代,云计算已经成为企业IT架构的核心。云原生作为云计算的最新演进形态,旨在通过一系列先进的技术和实践,帮助企业构建高效、弹性、可观测的应用系统。本文将从IO优化、key问题解决、多线程意义以及AI处理等多个维度,深入探讨云原生技术的内涵与外延,并结合Java和AI技术给出相应的示例。
101 1
|
2月前
|
运维 Cloud Native 持续交付
云原生技术解析:从IO出发,以阿里云原生为例
【10月更文挑战第24天】随着互联网技术的不断发展,传统的单体应用架构逐渐暴露出扩展性差、迭代速度慢等问题。为了应对这些挑战,云原生技术应运而生。云原生是一种利用云计算的优势,以更灵活、可扩展和可靠的方式构建和部署应用程序的方法。它强调以容器、微服务、自动化和持续交付为核心,旨在提高开发效率、增强系统的灵活性和可维护性。阿里云作为国内领先的云服务商,在云原生领域有着深厚的积累和实践。
57 0
|
4月前
|
运维 Cloud Native JavaScript
云端新纪元:云原生技术深度解析深入理解Node.js事件循环及其在异步编程中的应用
【8月更文挑战第27天】随着云计算技术的飞速发展,云原生已成为推动现代软件开发和运维的关键力量。本文将深入探讨云原生的基本概念、核心价值及其在实际业务中的应用,帮助读者理解云原生如何重塑IT架构,提升企业的创新能力和市场竞争力。通过具体案例分析,我们将揭示云原生技术背后的哲学思想,以及它如何影响企业决策和操作模式。
|
4月前
|
安全 关系型数据库 MySQL
揭秘:如何在无影的Serverless世界中,悄无声息地操控MySQL数据库!
【8月更文挑战第8天】在云计算领域,Serverless 枟能凭借其高效与弹性特性脱颖而出。本文采用问答形式解析函数计算环境中 MySQL 数据库的安全高效访问方法。介绍了如何利用数据库插件或 SDK 连接 MySQL,并提供了一个使用 Python 和 `pymysql` 在阿里云函数计算中连接 MySQL 的示例代码片段。同时强调了通过环境变量或密钥管理服务安全处理数据库凭证的重要性。随着 Serverless 技术的发展,数据库操作将更加简便。
81 7
|
4月前
|
存储 运维 Cloud Native
"Flink+Paimon:阿里云大数据云原生运维数仓的创新实践,引领实时数据处理新纪元"
【8月更文挑战第2天】Flink+Paimon在阿里云大数据云原生运维数仓的实践
281 3

热门文章

最新文章

相关产品

  • 函数计算
  • 推荐镜像

    更多