深度技术揭秘 | 大促狂欢背后,如何有效评估并规划数据库计算资源?

简介: 经过“双11”、“618”这类互联网促销活动的验证,越来越多的互联网公司采用不定期营销活动来刺激消费,达到提升营收能力的目标。然而,在每一次业务狂欢的背后,如何科学地为促销活动准备相应的计算资源就变成了困扰开发人员的常态问题。此外,据Gartner统计,在疫情的影响下越来越多的企业开始加速关键业务模块从本地云往公有云上迁移,以提升企业服务的稳定性和容灾能力。如何有效评估并规划计算能力、计算引擎、带宽等关键资源的容量成为了云场景下的一项技术挑战。

1. 背景

经过“双11”、“618”这类互联网促销活动的验证,越来越多的互联网公司采用不定期营销活动来刺激消费,达到提升营收能力的目标。然而,在每一次业务狂欢的背后,如何科学地为促销活动准备相应的计算资源就变成了困扰开发人员的常态问题。此外,据Gartner统计,在疫情的影响下越来越多的企业开始加速关键业务模块从本地云往公有云上迁移,以提升企业服务的稳定性和容灾能力。如何有效评估并规划计算能力、计算引擎、带宽等关键资源的容量成为了云场景下的一项技术挑战。

针对这个场景,阿里云数据库自治服务团队(DAS)推出了智能压测服务,致力于解决大促场景下计算资源评估问题、迁移上云的离线资源容量规划、跨引擎迁移等数据库选型评估问题。DAS(Database Autonomy Service)是一种基于机器学习和专家经验实现数据库自感知、自修复、自优化、自运维及自安全的云服务,帮助用户消除数据库管理的复杂性及人工操作引发的服务故障,有效保障数据库服务的稳定、安全及高效,解决方案架构见图1。image.png

2. 智能压测的组成

压测,即压力测试,是确立系统稳定性的一种测试方法,通常在系统正常运作范围之外进行,以考察其功能极限和隐患。一般针对网络服务器测试从传统的意义来讲是对网络服务器不断施加“压力”的测试,是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。在数据库场景下,压测通常指的是对数据库的性能进行测试,通过对数据库服务器不断提高执行SQL的数量和并发度,来测试既定规格下的数据库是否可以持续稳定地对外提供服务,并基于测试结果做出相应的决策,包括调整数据库规格、部署形态、业务SQL优化等等。通常情况下,完成一次压测主要涉及到三个关键部分:压测数据准备、流量回放和结果分析,如图2所示。

image.png

图2 智能压测的关键组成

压测数据:在数据库场景下,流量数据为SQL语句,但仅有执行时SQL语句是不够的。SQL语句在数据库内的执行过程中,真实数据分布和库表索引都会影响其执行时间。因此,数据库场景下,压测数据包含了数据库的库表结构、库表内数据、索引和SQL执行语句。此外,在一些有严格安全要求的特殊场景下,仅表结构允许复用,而具体原始数据不能被用于流量压测。针对这种情况,我们提出了智能生成数据的算法,产出符合原始数据分布的模拟数据用于回放。

流量回放技术:传统性能压测过程中,由于未对SQL执行语句按照原始流量的并发情况和执行次序做限制,出现压测与原始业务流量效果差异较大的现象,导致单次数据库资源评估任务中通常会进行多次压测,然后对性能结果数据求平均后再评估资源。这种方法需要耗费大量的测试时间,并且需要测试人员具有一定的数据库经验,通常需要DBA进行操作。针对这一问题,DAS对单次压测进行技术改进,通过压测幂等技术确保压测回放后的性能表现与原始业务流量性能相近,且无须多次回放,大幅节省了资源评估的时间并降低了对数据库压测经验的要求。

压测结果分析:有效的结果分析可以帮助用户合理的选择资源规格,并发现业务流量回放过程中存在的隐患。数据库的关键性能参数、关键性能指标的对比、SQL优化建议等数据可帮助用户理解资源差异和潜在优化点,辅助做出后续决策。

3. 智能压测技术内幕

3.1. 智能数据生成技术

关于数据库性能压测,业界存在很多开源的工具,例如Sysbench、mysqlslap、tpcc等。这类工具均可以通过并发大量数据库连接结合一定的查询语句来制造出一定的SQL流量,达到模拟业务高强度使用数据库的效果。但模拟场景下的性能表现通常和业务实际性能表现相差较大,故模拟压测不能满足计算资源评估的要求。利用业务数据库中的真实数据进行压测成为资源评估的基本条件。针对阿里云数据库用户,可通过SQL审计功能,方便的获取压测所需要的数据。而对于云下或阿里云ECS自建数据库的用户,较难获取历史上的库表数据或流量数据来做压测,甚至在一些有严格安全数据要求的场景下,连原始数据和SQL流量数据都是不被允许使用的。

目前,我们在单表查询场景下采用智能数据生成技术来产出符合业务数据分布的数据,可用于压测并评估资源。这个算法的前提是,需要我们已知一些SQL模版,以及这些SQL模版对应的执行指标,如RT,rows_sent,rows_affected等,我们希望实例化这些SQL模版来生成SQL,使得这些SQL在目标库表上执行时能得到相似的执行指标(这里我们假设同一模版的SQL都会以相同的执行计划来执行)。如图3所示,我们需要搜索相应的参数a和b来实例化这条SQL模版,使得在给定数据执行时返回行数为1。


image.png

图3 SQL模板

在搜索SQL参数的时候,对于点查询/点更新,可以直接利用主键和唯一键来做参数搜索。而对于返回行数/更新行数大于1行的情况,我们使用基于采样的基数估计方法来估计实例化后SQL的返回/更新行数,进而进行SQL模版实例化的参数搜索。

图4是我们对于钉钉一个读写业务在早高峰期的流量生成压测,可以看到流量生成压测和真实业务在多个指标上都有相似的表现,证明生成的数据可以有效的模拟线上真实数据。


image.png

图4 基于生成数据的压测效果

3.2. 压测幂等技术

在数据准备完成之后,如何有效且可重复的进行流量回放是智能压测中的另一项核心技术。尽管业内已有的开源工具均可以通过并发大量数据库连接结合一定的查询语句来制造出一定的SQL流量,达到模拟业务高强度使用数据库的效果。但是,在使用了真实的且有一定数据倾斜的业务模型之后,会发现一个比较严重的问题:假如多次测试同一个模型同一份数据在RDS MySQL下的性能效果,在数据有倾斜的情况下,两边的性能曲线很可能对不上。例如,第一轮压测在A时间点查到了某一个数据,而第二次压测很可能在B时间点才查到,这样对分析问题就有了很大干扰,如图5所示,两条曲线虽然压力差不多,但是抖动频率完全不一致,不利于分析。


image.png

图5 同一个数据库实例上跑两次相同的测试模型的效果

针对这种情况,我们提出了压测幂等的概念,即相同的测试,无论运行多少次,产生的SQL是完全一致的。在幂等情况下,每个时间点产生的SQL文本是完全相同的(假设数据库处理能力完全一致),并且整个压测任务中,所有SQL的执行顺序是一致的。目前做到了线程级别完全一致,不同线程之间从性能和需求的角度考虑没有实现强一致。

在幂等技术的加持下,DAS智能压测可以针对前文描述的场景可以做到一致性的压测,效果如图6。


image.png

图6 同一个数据库实例上跑两次相同的智能压测的效果

压测幂等的技术主要从压测线程生成逻辑、总请求数、写入最终一致性这三方面进行处理,让压测过程中可以确保每个线程内部出现的随机数的顺序都是一样的,并且不同线程之间不一样;通过保持线程中请求量总数一致,达到确保总请求量固定的效果;再结合自定义主键和约定update区间的方式,规避了自增主键和update冲突问题,确保了压测结束后的数据最终一致性。

4. 产品落地

4.1. 产品流程

介绍完智能压测的组成部分和对应的核心技术之后,下面来看DAS是如何将智能压测落地成产品。从压测的流程来看,整个智能压测的过程可以分为准备阶段、SQL处理阶段、回放阶段和效果评估阶段,如图7所示。

image.png

图7 智能压测产品流程

准备阶段主要是解决压测的机器环境问题,涉及从购买ECS机器、准备压测目标实例、配置ECS机器上的运行环境等。目前DAS的智能压测可根据压测流量的QPS和回放时长,自主选择合适的ECS机器并自动配置运行环境,也允许用户采用利用自有机器进行压测。在准备压测目标实例环节,现在DAS可通过RDS备份恢复、DTS同步的方式来自助帮助用户准备好目标实例,也允许用户自由指定压测实例。

SQL处理阶段则主要是对压测使用的全量SQL明细数据做压测前的数据准备,基于SQL洞察明细或者智能算法生成的SQL数据做预处理,包括prepared statement语句去重、日志剔除、事务语句合并等等操作。

在回放阶段主要是利用压测幂等技术将流量进行回放,提供了实时的数据库性能数据和压测机器负载情况,便于用户了解压测进度。在此环节中,DAS将智能调参算法与压测进行了结合,用户可通过该功能实现参数调优的功能,具体算法实现将在后续文章单独介绍。

效果评估阶段主要是解读压测过程中的指标数据,DAS对业务调优中常用的性能参数和关键性能指标做了对比,协助用户做出资源评估决策。对于压测过程中发现的慢SQL、锁等问题,DAS也提供了相应的改进建议和处理方法,对用户优化业务也提供了信息辅助。

4.2 产品使用

用户可以在DAS控制台的左侧菜单“智能压测”进行使用,如图8。目前DAS支持RDS MySQL和PolarDB MySQL压测,其他关系型数据库引擎的支持正在开发中。

image.png

图8 智能压测界面

在压测结束之后,用户可以通过任务详情查看到目标实例与源实例的性能数据对比以及关键参数的对比,如图9所示。


image.png

图9 压测后的效果对比

4.3. 产品计费

目前DAS智能压测功能未单独收费,压测流程中新创建的ECS、RDS均按照对应产品官网中以按量计费的标准进行计费,无额外服务费用。如前文所述,压测依赖源端全量SQL明细数据或相应库表基础结构数据,故该服务仅需要压测源端实例开启DAS专业版功能即可。

4.4. 客户案例

DAS智能压测服务自2020年上线以来,主要客户为云上头部客户,已累计为近百个客户提供服务,主要包括上云资源评估、业务大促评估、引擎切换评估、数据库操作验证等场景。

5. 未来规划

接下来,智能压测将增加支持的数据库引擎,覆盖云上的所有关系型数据库引擎;同时,智能压测将会贴近客户的真实业务问题,与用户上云、资源评估、引擎推荐等场景密切结合,并提供相应的压测评估建议和报告,与企业客户一起构建大规模场景下的数据库容量规划能力。

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

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

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

相关文章

学画画软件app推荐_今日推荐:拍照摄影APP之稀缺软件篇

你也许热衷拍摄或喜欢摄影,那么日常的拍摄主要的工具离不开手机,好的拍照摄影APP当然也必不可少。一个好的拍照软件更加重要,有时候市面上常用的拍照软件不能满足你特殊的拍摄手法,经常需要重新编辑或修改才能达到效果&#xff0c…

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

简介: 阿里云数据库实现了其特有的Autosaling能力,该能力由数据库内核、管控及DAS(数据库自治服务)团队共同构建,内核及管控团队提供了数据库Autoscaling的基础能力,DAS则负责性能数据的监测、Scaling决策算…

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,体验这款最受欢迎、最有趣、最具挑战性且容易入迷…