干货|一文读懂阿里云数据库Autoscaling是如何工作的

简介: 阿里云数据库实现了其特有的Autosaling能力,该能力由数据库内核、管控及DAS(数据库自治服务)团队共同构建,内核及管控团队提供了数据库Autoscaling的基础能力,DAS则负责性能数据的监测、Scaling决策算法的实现及Scaling结果的呈现。本文将从Autosaling的工作流程和落地等方面,详细阐述Autosaling相关知识。

1. 前言

Gartner预测到2023年,全球3/4的数据库都会跑在云上,云原生数据库最大的优势之一便是天然拥有云计算的弹性能力,数据库可以像水、电、煤一样随取随用,而Autosaling能力便是弹性的极致体现。数据库的Autoscaling能力是指数据库处于业务高峰期时,自动扩容增加实例资源;在业务负载回落时,自动释放资源以降低成本。

业界的云厂商AWS与Azure在其部分云数据库上实现了Autoscaling能力,阿里云数据库同样实现了其特有的Autosaling能力,该能力由数据库内核、管控及DAS(数据库自治服务)团队共同构建,内核及管控团队提供了数据库Autoscaling的基础能力,DAS则负责性能数据的监测、Scaling决策算法的实现及Scaling结果的呈现。DAS(Database Autonomy Service)是一种基于机器学习和专家经验实现数据库自感知、自修复、自优化、自运维及自安全的云服务,帮助用户消除数据库管理的复杂性及人工操作引发的服务故障,有效保障数据库服务的稳定、安全及高效。其解决方案架构如图1.所示,Autoscaling/Serverless能力在其中属于“自运维”的部分。

1620203836338-d909c683-c1c1-41f7-8567-cfcc8306501c.png

图1. DAS的解决方案架构

2. Autosaling的工作流程

数据库Autoscaling整体的工作流程可定义为如图2.所示的三个阶段,即“When:何时触发Scaling”、“How:采取哪种方式Scaling”及“What:Scaling到哪个规格”。

  1. 何时触发Scaling即确定数据库实例的扩容与回缩的时机,通常的做法是通过观测数据库实例的性能指标,在实例的负载高峰期执行扩容操作、在负载回落时执行回缩操作,这是常见的Reative被动式触发方式,除此之外我们还实现了基于预测的Proactive主动式触发方式。关于触发时机在2.1章节会进行详细的介绍。
  2. Scaling的方式通常有ScaleOut(水平扩缩容)与ScaleUp(垂直扩缩容)两种形式。以分布式数据库PolarDB为例,ScaleOut的实现形式是增加只读节点的数量,例如由2个只读节点增加至4个只读节点,该方式主要适用于实例负载以读流量占主导的情形;ScaleUp的实现形式是升级实例的CPU与内存规格,如由2核4GB升级至8核16GB,该方式主要适用于实例负载以写流量占主导的情形。关于Scaling方式在2.2章节会进行详细的介绍。
  3. 在扩容方式确定后需要选择合适的规格,来使实例的负载降至合理的水位。例如对于ScaleOut方式,需要确定增加多少个实例节点;对于ScaleUp方式,需要确定升级实例的CPU核数与内存,以确定升级至哪种实例规格。关于扩容规格的选择在2.3章节会进行详细的介绍。

1620272752916-90eff095-c673-4e2f-a464-8711e80a3906.png图2. Autoscaling的工作流程图示

2.1 Autoscaling的触发时机

2.1.1 Reactive被动式触发(基于观察)

基于观察的Reactive被动式触发是当前Autoscaling主要的实现形式,由用户为不同的实例设置不同的扩、缩容触发条件。对于计算性能扩容,用户可以通过设置触发CPU阈值、观测窗口长度、规格上限、只读节点数量上限及静默期等选项来配置符合业务负载的触发条件;对于存储空间扩容,用户可以通过设置空间的扩容触发阈值及扩容上限来满足实例业务的增长,并避免磁盘资源的浪费。被动式触发的配置选项在3.2章节会进行详细的展示。

Reactive被动式触发的优点是实现相对容易、用户接受度高,但如图3.所示,被动式触发也存在其缺点,通常Scaling操作在达到用户配置的观测条件后才会真正执行,而Scaling操作的执行也需要一定的时间,在这段时间内用户的实例可能已经处于高负载较长时间,这会在一定程度上影响用户业务的稳定性。

1620893706118-d6ead028-923b-4a88-bf27-51ca3cc53299.png

图3. 被动式触发的扩容资源对比图示

2.1.2 Proactive主动式触发(基于预测)

解决Reactive被动式触发的方法便是Proactive主动式触发,如图4.所示,通过对实例负载的预测,在预测实例负载即将处于高峰前的一段时间,便提前对实例执行扩容操作,使实例能够平稳度过整个业务高峰期。周期性workload是基于预测的方式中最典型的应用场景(线上具有周期性特征的实例约占40%),DAS使用了达摩院智能数据库实验室同学实现的周期性检测算法,该算法结合了频域和时域信息,准确率达到了80%以上。例如对具有“天级别”周期性特征的线上实例,Autoscaling服务会在实例每天的业务高峰期开始之前进行扩容,以使实例更好地应对周期性的业务峰值。

1620896791003-bf4ca049-4d98-4fab-a28e-7f68e186a163.png

图4. 主动式触发的扩容资源对比图示

我们同样在RDS-MySQL的存储空间扩容里实现了基于预测的方式,基于实例过去一段时间的磁盘使用量指标,使用机器学习算法预测出实例在接下来的一段时间内存储空间会达到的最大值,并会根据该预测值进行扩容容量的选择,可以避免实例空间快速增长带来的影响。

1620216065230-41cb7178-9136-42ff-ba59-f1cd22a7b417.png1620216074499-c971f2cd-4f72-4ac0-9db7-fa3f7fc26992.png

图5. 基于磁盘使用量趋势的预测

2.2 Autoscaling的方式决策

DAS的Autoscaling方式有ScaleOut与ScaleUp两种,在给出Scaling方案的同时也会结合Workload全局决策分析模块给出更多的诊断建议(如SQL自动限流、SQL索引建议等等)。如图6.所示是Scaling方式的决策示意图,该示意图以PolarDB数据库作为示例。PolarDB数据库采用的是计算存储分离的一写多读的分布式集群架构,一个集群包含一个主节点和多个只读节点,主节点处理读写请求,只读节点仅处理读请求。图6.所示的“性能数据监测模块”会不断的监测集群的各项性能指标,并判断当前时刻的实例负载是否满足2.1章节所述的Autoscaling触发条件,当满足触发条件时,会进入到图6.中的Workload分析模块,该模块会对实例当前的Workload进行分析,通过实例的会话数量、QPS、CPU使用率、锁等指标来判断实例处于高负载的原因,若判断实例是由于死锁、大量慢SQL或大事务等原因导致的高负载,则在推荐Autoscaling建议的同时也会推出SQL限流或SQL优化建议,使实例迅速故障自愈以降低风险。

在Autoscaling方式的决策生成模块,会判断采取何种Scaling方式更有效。以PolarDB数据库为例,该模块会通过实例的性能指标以及实例的主库保护、事务拆分、系统语句、聚合函数或自定义集群等特征来判断集群当前的负载分布,若判断实例当前以读流量占主导,则会执行ScaleOut操作增加集群的只读节点数量;若判断实例当前以写流量占主导,则会执行ScaleUp操作来升级集群的规格。ScaleOut与ScaleUp决策的选择是一个很复杂的问题,除了考虑实例当前的负载分布外,还需要考虑到用户设置的扩容规格上限及只读节点数量上限,为此我们也引入了一个效果追踪与决策反馈模块,在每次决策判断时,会分析该实例历史上的扩容方式及扩容效果,以此来对当前的Scaling方式选择算法进行一定的调整。

1620746291098-3088e9f1-4ca6-4f0f-9b35-c8b4b3c82665.png

图6. PolarDB的Scaling方式决策示意图

2.3 Autoscaling的规格选择

2.3.1 ScaleUp决策算法

ScaleUp决策算法是指当确定对数据库实例执行ScaleUp操作时,根据实例的workload负载及实例元数据等信息,为当前实例选择合适的规格参数,以使实例当前的workload达到给定的约束。最开始DAS Autoscaling的ScaleUp决策算法基于规则实现,以PolarDB数据库为例,PolarDB集群当前有8种实例规格,采用基于规则的决策算法在前期足够用;但同时我们也探索了基于机器学习/深度学习的分类模型,因为随着数据库技术最终迭代至Serverless状态,数据库的可用规格数量会非常庞大,分类算法在这种场景下会有很大的用武之地。如图7.及图8.所示,我们当前实现了基于性能数据的数据库规格离线训练模型及实时推荐模型,通过对自定义CPU使用率的范围标注,参考DAS之前落地的AutoTune自动调参算法,在标注数据集进行模型分类,并通过实现的proxy流量转发工具进行验证,当前的分类算法已经取得了超过80%的准确率。

1620205006300-378e3f90-193c-4dd4-8ab7-d83f37076d51.png图7. 基于性能数据的数据库规格ScaleUp模型离线训练示意图

1620205087424-39044201-daf7-4900-9737-99301a480915.png

图8. 基于性能数据的数据库规格ScaleUp实时推荐方法示意图

2.3.2 ScaleOut决策算法

ScaleOut决策算法与ScaleUp决策算法的思路类似,本质问题是确定增加多少个只读节点,能使实例当前的workload负载降至合理的水位。在ScaleOut决策算法里,我们同样实现了基于规则的与基于分类的算法,分类算法的思想与2.3.1章节里描述的基本类似,基于规则的算法思想则如图9.所示,首先我们需要确定与读流量最相关的指标,这里选取的是com_select、qps及rows_read指标,s_i表示第i个节点读相关指标的表征值,c_i表示第i个节点的目标约束表征值(通常使用CPU使用率、RT等直接反应业务性能的指标),f指目标函数,算法的目标便是确定增加多少个只读节点X,能使整个集群的负载降至f函数确定的范围。该计算方法明确且有效,算法上线后,以变配后集群的CPU负载是否降至合理水位作为评估条件,算法的准确率达到了85%以上,在确定采取ScaleOut变配方式后,ScaleOut决策算法新增的只读节点基本都能处于“恰好饱和”的工作负载,能够有效的提升数据库实例的吞吐。

1620749330105-e0f0d551-31a0-471f-9d31-f2ea1d9f7a6c.png

图9. 基于性能数据的数据库节点数量ScaleOut推荐算法示意图

3. 落地

3.1 实现架构

Autoscaling能力集成在DAS服务里,整个服务涉及异常检测、全局决策、Autoscaling服务、底层管控执行多个模块,如图10.所示是DAS Autoscaling的服务能力架构。异常检测模块是DAS所有诊断优化服务(Autoscaling、SQL限流、SQL优化、空间优化等)的入口,该模块会7*24小时对监控指标、SQL、锁、日志及运维事件等进行实时检测,并会基于AI的算法对其中的趋势如Spike、Seasonaliy、Trend及Meanshift等进行预测及分析;DAS的全局决策模块会根据实例当前的workload负载给出最佳的诊断建议;当由全局决策模块确定执行Autoscaling操作时,则会进入到第2章节介绍的Autoscaling工作流程,最终通过数据库底层的管控服务来实现实例的扩、缩容。

1620205046779-9471a4fa-72ed-440d-bb29-78bc2277f47f.png

图10. DAS及AutoScaling的服务能力架构

3.2 产品方案

本章节将介绍Autoscaling功能在DAS里的开启方式。如图11.所示是DAS的阿里云官网产品首页,在该界面可以看到DAS提供的所有功能,如“实例监控”、“请求分析”、“智能压测”等等,点击“实例监控”选项可以查看用户接入的所有数据库实例。我们点击具体的实例id链接并选择“自治中心”选项,可以看到如图12.及图13.所示的PolarDB自动扩、缩容设置及RDS-MySQL自动扩容设置,对于PolarDB实例,用户可以设置扩容规格上限、只读节点数量上限、观测窗口及静默期等选项,对于RDS-MySQL实例,用户可以设置触发阈值、规格上限及存储容量上限等选项。

1620787185438-fa9c4636-e04d-46c8-85da-b25a9fffbba1.png

图11. DAS产品首页

1620387142741-9657a76a-b882-47f5-b913-d32f54494e88.png

图12. PolarDB自动扩、缩容设置图示

1620387239196-d80c4298-4801-42b3-92e7-98cf667dae9f.png

图13. RDS-MySQL自动扩、缩容设置图示

3.3 效果案例

本章节将介绍两个具体的线上案例。如图14.所示为线上PolarDB实例的计算规格Autoscaling触发示意图,在05:00-07:00的时间段,实例的负载慢慢上升,最终CPU使用率超过了80%,在07:00时触发了自动扩容操作,后台的Autoscaling服务判断实例当前读流量占主导,于是执行了ScaleOut操作,为集群增加了两个只读节点,通过图示可以看到,增加节点后集群的负载明显下降,CPU使用率降至了50%左右;在之后的2个小时里,实例的业务流量继续增加,导致实例负载继续在缓慢上升,于是在09:00的时候再次达到了扩容的触发条件,此时后台服务判断实例当前写流量占主导,于是执行了ScaleUp操作,将集群的规格由4核8GB升级到8核16GB,由图示可以看到规格升级后实例的负载趋于稳定,并维持了近17个小时,之后实例的负载下降并触发了自动回缩操作,后台Autoscaling服务将实例的规格由8核16GB降至4核8GB,并减少了两个只读节点。Autoscaing服务在后台会自动运行,无需人工干预,在负载高峰期扩容、在负载低谷时回缩,提升业务稳定性的同时降低了用户的成本。

1620789884943-dc2d659a-84e1-401a-b3f3-98009cd41366.png

图14. 线上PolarDB 水平扩容、垂直扩容效果示意图

如图15.所示为线上RDS-MySQL实例的存储空间自动扩容示意图,左侧图表示实例在近3个小时内触发了3次磁盘空间扩容操作、累计扩容近300GB,右侧是磁盘空间的增长示意图,可以发现在实例存储空间迅速增长时,空间自动扩容操作能够无缝执行,真正做到了随用随取,在避免实例空间打满的同时节省了用户的成本。

1620798317229-4d009b44-bcbc-4b1a-88f9-4435f9b34529.png  1620791745820-b4c02548-81c1-4c4f-9dd4-bdfb676e3d44.png

图15. 线上RDS-MySQL空间扩容效果示意图

原文链接
本文为阿里云原创内容,未经允许不得转载。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jq动态渲染后获取不到元素高度_浏览器的渲染机制

面试肯定会问到这个吧~So:再一次的屡屡浏览器的渲染机制~在渲染一开始会先从网络层获取请求文档(HTML、XML)的内容,然后再进行以下基本流程3.1 解析HTML 》 DOM树从HTML文本解析到HTML语法树,再解析到文档对象树&#…

数字时代的抉择,金蝶 EBC 的破局

今年 10 月,Gartner 发布了企业在 2021 年需要关注的重要战略科技趋势,其中“可组装的企业”一词引起热议。Gartner 认为原本为了提高效率而建立的静态业务流程很脆弱,在疫情的冲击下容易变得支离破碎,因此企业应具有不断重组与改…

自己动手从0开始实现一个分布式RPC框架

简介: 如果一个程序员能清楚的了解RPC框架所具备的要素,掌握RPC框架中涉及的服务注册发现、负载均衡、序列化协议、RPC通信协议、Socket通信、异步调用、熔断降级等技术,可以全方位的提升基本素质。虽然也有相关源码,但是只看源码…

deb 中标麒麟_「图」百度网盘Linux版放出deb包客户端:新增支持Ubuntu 18.04 LTS

6月中旬发布的百度网盘Linux版本中,首先适配了中标麒麟桌面操作系统软件(兆芯版)V7.0。而今天Ubuntu官方推特最新微博表示,继发布Linux rpm包客户端之后,官方今天又推出了deb包客户端,新增支持Ubuntu 18.04 LTS。目前百度网盘已经…

KubeVela 成为 CNCF 沙箱项目,让云端应用交付更加简单

简介: KubeVela 就是这样一个面向用户的上层平台项目。对于业务开发者来说,KubeVela 简单、易用,它可以让开发者以极低的心智负担和上手成本在 Kubernetes 上定义与部署应用... 但更重要的是,对于平台团队来说,KubeVel…

携程梁建章:要让元宇宙技术成为真宇宙探索、旅游的灵感来源

“我们要把旅游做的更有交互性,更有沉浸感,更有趣,远远抛开元宇宙。” 携程集团联合创始人,董事局主席梁建章在12月9日于澳门伦敦人举办的全球合作伙伴峰会上,发表了对热门话题“元宇宙”的看法并表示,激发…

shell两个时间字符串插值_Shell 脚本速成

0x00 前言这段时间快速把 Micropoor 的内网课程看完了一遍,里面出现了很多 Shell 脚本。Shell 脚本有什么好处?无需安装其他软件适合任务自动化,擅长系统管理任务通过 Shell 编程,大大提高渗透效率。0x01 第一个 shell 脚本功能&a…

Quick Audience组织和工作空间功能解读

近期,Quick Audience完成了权限系统全面升级,可以解决集团企业不同品牌、不同运营组织,不同消费者运营的诉求,精细化保障企业数据访问安全,提升管控的灵活度。 Quick Audience整个系统分为组织管理和工作空间两层。一个…

mac安装python环境教程_python mac下安装虚拟环境的图文教程

Mac 下 Flask 框架 workon命令找不到 ---- 最终解决方案(详解具体实现操作过程中遇到的坑)2018年08月17日 00:02:05Jasonmes阅读数:622 Mac 下 Flask 的 全网最详细搭建1.安装virtualenv和virtualenvwrapper sudo pip install virtualenv# 以…

数据智能构建管理平台Dataphin V2.9.4.3版本发布

简介: Dataphin发布V2.9.4.3版本升级多项产品能力,该版本在产品功能和用户体验上都进行了优化和提升,旨在为用户提供更完善的产品能力和体验,以加速企业数据中台建设进程。 1 产品简介 Dataphin是阿里巴巴集团OneData数据治理方…

host文件注释 ubuntu_Redis and MongoDB 设置密码验证(scrapy)(win)(ubuntu)

1 . Rediswin101.找到 redis.windows.conf ,对其进行编辑。将 # requirepass foobared 更改为 requirepass yourpassword 2.重新启动 redis-server 服务,如: redis-server redis.windows.conf (以redis.windows.conf为配置启动redis-server)ubuntu1.ubuntu下Redis的配置文件为…

阿里云罗小飞:阿里云边缘云,从资源到场景的产品演进

2021年7月1日,以“云集影从,融网聚生”为主题的GIDC全球互联网数据大会在上海成功举行。本次大会由中国信通院指导,艾迪网主办,邀请来自政府、产业等多领域的专家,围绕“新基建”、“绿色数据中心”、“云网协同”、“…

乾通嗖嗖抢先布局多元化用工 实现全流程数智化人力管理

12月9日,乾通互连战略升级暨乾通嗖嗖媒体发布会在北京举行。在发布会上,乾通互连对外宣布组织架构再升级,未来将围绕薪酬社保福利及多元化用工两大业务板块进行战略布局,推出多元化用工解决方案——乾通嗖嗖。 乾通嗖嗖通过线上多…

那些年,我们一起做过的性能优化

简介: 性能优化是一个体系化、整体性的事情,印刻在项目开发环节的各个细节中,也是体现技术深度的大的战场。文章以Quick BI的复杂系统为背景,详细介绍性能优化的思路和手段,以及体系化的思考。 一直以来,性…

中继承父类实现父类方法的快捷键_关于封装、继承

在初期,很多人对于java中一些定义的认识比较模糊,今天我就来详细讲一讲我所认识的封装和继承。1、封装1.1)概念:将类的某些信息隐藏在内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息…

KubeVela 上手(1)|让云端应用交付更加丝滑

简介: KubeVela 是阿里云和微软共同发起的 OAM(Open Application Model)标准的技术实现,旨在打造统一、标准、跨环境的云端应用交付,省时省力,轻松简单 作者|KubeVela 社区 本文适合所有软件工…

华为云云原生首次在太空验证,提升“天算星座“卫星计算精度

12月10日,搭载“天算星座”计算平台的试验卫星在轨稳定运行,华为云“云边一体”方案首次在太空验证。 图:天算星座计划 “天算星座”计划,由北京邮电大学深圳研究生院与天仪研究院共同发起,以服务国家重大战略需求和…

火柴人_火柴人战争遗产修改无限金币钻石

火柴人战争遗产修改无限金币钻石V1.11.160/中文/80M商店内使用钻石购买商品不减反增【一、游戏简介】《火柴人战争遗产修改版 Stick War: Legacy》一直最受玩家欢迎、评分最高的一款网游现在推出移动版.玩 Stick War,体验这款最受欢迎、最有趣、最具挑战性且容易入迷…

一种通用整形数组压缩方法

简介: 我们在开发中后台应用或者中间件的时候,会存储一些数据在内存中以加快访问速度。随着数据量的增加,除了可以放置于堆外,还可以通过实时压缩来缓解。今天就给大家介绍一种压缩整形数组的方式。 作者 | 玄胤 来源 | 阿里技术公…

gitlab git clone 卡住_gitlab从入门到绝望

啥年月了还用svn,日了狗一样难受。开搞!docker是最好的容器,直接docker装gitlab。学新玩意不去官网不是人:https://docs.gitlab.com/omnibus/docker/#expose-gitlab-on-different-portsdocker pull gitlab/gitlab-cesudo docker r…