作者信息 李伟(花名:沐远), 云原生数据仓库AnalyticDB MySQL核心研发人员,10年数据仓库、数据湖、大数据、云原生研发经验,目前专注于数据仓库的云原生及Serverless弹性。
背景
如今,全球经济增长放缓、市场需求疲软,企业加强数字化建设提高运营效率是降低成本的有效手段,在这样的背景下云原生数仓AnalyticDB MySQL湖仓版(以下简称ADB MySQL)可以做到弹性按需的使用。
下面是湖仓版的产品大图,橙色部分是「湖仓版」相对于「数仓版」新增的功能,灰色部分是「湖仓版」相对于「数仓版」迭代升级的功能。

1.Serverless弹性的价值及挑战
Serverless的定义
Serverless弹性的价值
Case 1:业务的混合SQL负载包含短查询和离线ETL, 当离线ETL运行的时候影响短查询的响应时间
Case 2:为了能够运行一个大的离线SQL,对实例进行了扩容,当离线SQL不运行的时候实例的资源浪费
Case 3:在线负载高峰期需要人肉去进行实例的扩容,手忙脚乱
Case 4:紧急情况扩容实例应对负载提高,遇到底层资源不足,扩容失败
Case 5:实例弹性效率低,启动时间相比业务资源使用时间难以忽略
Serverless弹性的挑战
这些挑战ADB MySQL已经逐步解决,我们也期望将技术分享出来,让大家更好的使用ADB MySQL相关产品能力来满足业务需求。
2.Serverless弹性的架构
ACU归一化的资源定义
引入了“1ACU约等于1Core 4GB”的归一化资源定义,来度量计算弹性资源的使用量。1ACU的资源单元较小,可以较好支撑ADB MySQL做到最细粒度的弹性,帮助用户将成本降低到极致。
端到端的池化调度架构
● 引擎调度层:不同引擎的弹性资源编排,比如离线计算的按需弹性、在线计算的分时弹性资源申请等;
● 统一调度层:基于ACK/K8s的能力,构建多引擎的混部调度,同时管理包括存储、计算、网络基础设施;
● 弹性库存调度:用来管理固定资源池、弹性资源池的两级资源池,从而保障弹性过程中的资源供给,以及弹性效率的优化。

3.Serverless弹性的技术解析
弹得起-池化弹性库存供给技术

弹得快-池化弹性效率优化技术
支持负载的弹性除了库存供给技术外,另外一个重要技术是弹性效率。如果启动一个离线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左右。

弹得准-贴合业务负载按需弹性技术
在线负载按需弹性技术
● 负载感知:包含用户设定定时弹性规则(已经产品化)、ADB Workload Manager自感知业务负载进行弹性(研发中)两种模式;
● 库存供给:负载感知模块生成具体资源扩缩的需求后,库存供给模块会提前或者实时的准备资源;
● 实例弹性:当资源准备好后,实例弹性模块进行实例的扩缩容,支持业务负载感知对资源的需求。
离线负载解耦按需弹性技术
为了解决这样的问题,ADB MySQL支持了离线Query级别的弹性资源供给。离线Query需要的资源和在线资源完全隔离,在线负载不受影响;离线Query的资源按需申请使用,用户不需要承担资源空跑的成本。
目前ADB MySQL具备了上面四块支持Serverless 弹性的基础技术能力,未来会在更智能、更快、更省钱等方面持续加强技术建设。
4.Serverless弹性效果及最佳实践
AnalyticDB MySQL湖仓版已于11月1日正式开放公测,对于低成本离线处理ETL有需求,同时又需要使用高性能在线分析支撑BI报表/交互式查询/APP应用的用户,欢迎点击文末「阅读原文」进行公测申请。
[1] The Berkeley Paper:https://www2.eecs.berkeley.edu/Pubs/TechRpts/2019/EECS-2019-3.pdf










点击「阅读原文」进行 AnalyticDB MySQL湖仓版公测申请