2016阿里云数据库双11复盘-自动化备战,0干预

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 2016年双11狂欢节完美落幕,这是阿里云RDS连续第五年支持双11大促,在持续高压力冲击下,整个双11期间0故障0丢单,相比前面四年,在备战过程中更加的自动和主动,今年双11高峰期间达到了0干预的目标。本文由核心参加工程师整理总结今年双11备战过程中在自动化以及性能优化所作的一些改进。

前言

2016年天猫双11购物狂欢节已经完美落下帷幕,高峰期间订单创建每秒达到了16.5万笔,RDS集群的QPS最高达到了400W,其中99%的商家订单在阿里云云数据库服务中完成存储和处理。这是RDS连续第五年支持天猫双11大促,在持续高压力冲击下,整个双11期0故障0丢单,相比前面四年,我们在备战过程中更加的自动和主动,今年双11高峰期间做达到了0干预的目标。这些都是在前期充分的准备工作中所换来的从容,在面对这么大规模实例备战的时候,通过前几年备战经验的积累,我们在产品自动化上继续深挖,主动推送弹性升级,主动对实例进行健康诊断,主动对集群资源迁移离散,秒级监控大盘等等,通过系统和平台将双11的经验沉淀,为双11的稳定平稳渡过奠定了基础。同时在核心链路组件上不断深入优化,用性能的提升达到了成本的节约。下面分享一下今年双11 备战过程中我们在自动化以及性能优化所作的一些改进。
screenshot.png

专家系统主动健康诊断—一千个“DBA”在帮用户

在前面四年双11保障过程中我们发现双11当天往往最容易出现问题是用户自身的应用程序问题导致系统卡慢。双11前没有暴露出的问题,会由于双11当天巨量的订单和高频的系统调用将这些潜在问题放大。提前找出并解决问题是保障双11稳定运行的最佳手段。因此本次双11活动之前,我们就对所有相关数据库进行了全面的体检,将数据库中的潜在风险提前识别出来,并通知用户进行优化和升级。本次双11备战期间我们为客户的实例进行了三轮主动健康诊断,其主要特点:1)诊断报告生成的高度自动化。生成健康诊断报告上万份且全程无人工干预,这一全新的运维方式在之前是不可想象的;2)诊断内容的深度化。从基本的资源使用情况和慢SQL分析,到死锁检测和审计日志全方位统计,再到事务的深层次分析找出应用中的潜在问题等都包含在我们的诊断报告当中;3)运维保障的人性化。本次双11保障不是简单粗暴的让客户升级系统规格,而是以优化为主升级为辅的方式。提前主动给出诊断优化建议极大的提升了用户体验。
screenshot.png

Proxy 性能5W到10W的提升

Proxy作为整个RDS数据通道的咽喉,其稳定性是影响整个双11能否成功的关键因素。今年我们双11在 proxy的稳定性及可运维上进行了改进,同时在性能优化上通过减少消息量及数据拷贝使得性能从原来的5w提升到10w,使得在集群不扩容的情况下,承载了去年2倍的压力,相当于减少了一半的机器。通过调整内核参数SO_RCVBUF来提高proxy与client的吞吐量,对于前端网络质量较差的情况吞吐量提升10倍以上。另外,在双11之前通过proxy的容量评估模型发现集群内各分组的压力不均衡问题,从而进行迁移保证了在双11期间各集群及分组压力更加均衡。同时对聚石塔集群的多项重要指标进行秒级大盘化监控,保证能够快速精确的发现系统的潜在问题及容量风险。
screenshot.png

秒级监控大盘

打仗行军必须要有可靠,准确和及时的情报信息来支撑瞬息万变的战场。在双11当天,秒级监控大盘能够帮助我们实时关注系统健康状态,分组监控大盘帮助我们关注各个战场运行情况,心中有了运筹于帷幄之中,决胜于千里之外的感觉。
• 每秒更新的集群QPS、流量、延迟、连接数核心指标;
• 全量观察所有Proxy节点关键指标的健康度,秒级发现健康情况变差的节点;
screenshot.png

为了能够提前发现Proxy的异常并抓住具体的异常点,我们需要在一个页面上查看多项关键指标在每台Proxy上的健康状况,前端设计上通过热力图的形式来展示,通过精心选择的颜色来标示这个指标的健康情况,多个指标通过tab的方式自动切换。
我们首先需要以最低的损耗全量纪录用户请求的信息,我们在内核TCP协议栈状态机中将每个SQL请求的流量、网络延迟、处理延迟等指标计算出来,并通过内存将数据传到用户态。为了减少发送数据的网络损耗, 首先会在本地进行预处理聚合, 压缩后发送到Kafka集群, 后面用JStorm对不同机器来源的数据进行实时分析。
为了前端的流畅,减少渲染开销,实时趋势图只在页面渲染的时候整条线绘制一次,后面每秒的增量都只做累加绘制;热力图也只在页面渲染的时候才会绘制节点结构,而后面的状态数据更新也只是更改各节点的颜色属性,且五个指标数据共用一个节点结构。
我们在各个环节都做了容错处理,在计算任务上可以出现失败后补回数据,存储上使用RDS作为保障,多节点数据API,前端页面在访问后端出现问题时仔细的处理了异常,保证浏览器页面不崩溃,并在异常恢复后,补回数据继续实时更新。

主动推送弹性升级

弹性升级是商家在双11备战过程比不可少的一个环节,但是每年还是有很多用户不知道是否需要对数据库进行弹性升级。常常看到双11当天还有较多商家进行升级,这个时候其实已经比较危险了,这个时候系统压力往往非常大,对弹性升级的任务是有较大影响的。所以在2016年的双11备战前期,我们的系统能不能够针对用户的系统压力分析,提前通知用户进行升级,这样对双11的平稳渡过有着重要的意义。今年双11期间,通过扫描实例资源使用情况推动客户升级数占总升级的90%。
screenshot.png

移山资源自动打散—让资源流动起来

底层物理资源的稳定和均衡是保障双十一稳定运行的基础,双十一之前我们自动将集群的主机根据负载情况进行自动的离散,最大化的利用集群的计算资源,同时也保障在双11期间没有资源使用没过载的主机出现。双十一备战期间,通过系统共下发离散迁移任务超过1000+次,充分有效地利用了线上资源,为双十一的稳定做出了巨大贡献。双11结束之后,移山可以方向进行资源搜索,将双11扩容的资源再次回收到资源池中,以供其他业务进行售卖,已达到资源的最大化使用。
screenshot.png

Proxy链路-防闪断,防攻击

然后有人可能会问这些后台的资源离散任务是如何做到对用户的访问实现无影响的?其核心的技术就是在代理层对用户连接上的处理--proxy防闪断。通过协议级解析及SQL parse两层逻辑来判断用户的连接请求状态,对于“空闲”的连接通过proxy来完成切换,连接到新的主库地址,并且对用户无感知。对于非空闲比如事务,我们会等待事务结束再进行切换,尽量的减少切换对用户的连接的影响,通过线上的数据我们行到我们防闪断桥接率达到93%。
screenshot.png
Proxy除了连接防闪断能力外,还具有防攻击能力。由于所有的应用请求都经过proxy处理,所以我们在proxy层加入了SQL拦截规则,对于符合注入规则的请求我们可以进行拦截,保护用户数据库的安全。

双11当天问题

通过前期大量的备战工作准备,双11高峰期间我们没有对系统做过任何的干预措施,但收到部分用户反馈的一些典型问题,下面总结如下:

弹性升级任务时间较长

用户的弹性升级过程可能有两类,一类是本机升级,另外一类是跨机升级。本机升级的时间受限于实例本身的压力,如果数据库压力过高可能会导致备库无法完全与主库同步,进而导致升级时间较长;跨机升级的时间除了受限于实例自身的压力外,还与实例的数据量大小相关,具体可以参考文章“高人自有妙计:罗龙九六招制服云数据库大流量峰值”。
screenshot.pngscreenshot.png

用户自身问题导致系统卡慢

双11期间较多客户反馈应用不能响应或rt较长,通过排查定位绝大多数情况是数据库响应请求很快,但是瓶颈在自身的系统设计缺陷以及应用服务器问题,比如DNS请求访问缓慢,或者表结构设计不当,索引缺失等问题。
表结构:
order` (
ID int(10) unsigned NOT NULL AUTO_INCREMENT,
No varchar(50) NOT NULL DEFAULT '',
From varchar(50) DEFAULT NULL,
Shop varchar(50) DEFAULT NULL,
Code varchar(50) NOT NULL DEFAULT '',
Flg int(11) DEFAULT '0',
PRIMARY KEY (ID,No,Code)
) ENGINE=InnoDB AUTO_INCREMENT=176667 DEFAULT CHARSET=utf8
访问SQL:
update order set Flg = '1', No = '11' WHERE No = '11' AND Code='22' and Flg='0'
优化建议:
alter table order add index ind_orderdetail(No)

双11的全民化

随着双11的全民化,有许多企业公司也开始做双11促销,但是他们的经验往往是比较匮乏的。双11当天我们就收到了一些用户的援助请求,由于前期没有做好系统压测,导致在双十一当天业务高峰来临的时候系统垮掉,然后才考虑扩容,这个时候往往已经为时已晚。双11的护航保障经验是可以更广的传播到这些公共云客户上,这也是为什么会写这篇文章的主要原因。

未来,沉淀专家经验到系统中和传承保障经验

双11是全民的双11,云计算是全民的云计算,我们忠心希望未来用户在使用云计算的时候能够像使用水电煤一样简单。我们也会不断地将最佳实践和双11的保障经验沉淀到专家系统中,只有这样才能将其作用最大化,规模化,可复制化,让用户真正简单方便的得到实惠。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
22天前
|
关系型数据库 分布式数据库 数据库
成都晨云信息技术完成阿里云PolarDB数据库产品生态集成认证
近日,成都晨云信息技术有限责任公司(以下简称晨云信息)与阿里云PolarDB PostgreSQL版数据库产品展开产品集成认证。测试结果表明,晨云信息旗下晨云-站群管理系统(V1.0)与阿里云以下产品:开源云原生数据库PolarDB PostgreSQL版(V11),完全满足产品兼容认证要求,兼容性良好,系统运行稳定。
|
28天前
|
缓存 安全 Java
阿里云数据库 SelectDB 内核 Apache Doris 2.0.6 版本正式发布
阿里云数据库 SelectDB 内核 Apache Doris 2.0.6 版本正式发布
|
29天前
|
存储 NoSQL 数据库
阿里云数据库Cassandra的产品价格
阿里云数据库Cassandra提供多地域服务,如中国、亚太、欧洲、美洲及中东。计费分为实例主机节点规格费和存储费用,实例价格因节点数和副本数而异,存储费用按挂载云盘计算。生产系统建议配置多节点以确保冗余。公网流量目前免费,具体收费时间未定。详细价格以购买页面为准。
421 3
|
1月前
|
SQL 关系型数据库 MySQL
2024年阿里云数据库创建_数据库账号密码和连接教程
阿里云数据库怎么使用?阿里云百科整理阿里云数据库从购买到使用全流程,阿里云支持MySQL、SQL Server、PostgreSQL和MariaDB等数据库引擎,阿里云数据库具有高可用、高容灾特性,阿里云提供数据库备份、恢复、迁移全套解决方案。详细阿里云数据库购买和使用流程方法如下
|
26天前
|
SQL 安全 数据管理
在阿里云数据管理DMS(Data Management Service)中,您可以按照以下步骤来创建和管理数据库
【2月更文挑战第33天】在阿里云数据管理DMS(Data Management Service)中,您可以按照以下步骤来创建和管理数据库
28 7
|
27天前
|
SQL 关系型数据库 MySQL
阿里云MySQL数据库价格、购买、创建账号密码和连接数据库教程
阿里云数据库使用指南:购买MySQL、SQL Server等RDS实例,选择配置和地区,完成支付。创建数据库和账号,设置权限。通过DMS登录数据库,使用账号密码访问。同地域VPC内的ECS需将IP加入白名单以实现内网连接。参考链接提供详细步骤。
367 3
|
17天前
|
弹性计算 关系型数据库 MySQL
阿里云数据库服务器价格表,数据库创建、连接和使用教程
阿里云数据库使用流程包括购买和管理。选择所需数据库类型如MySQL,完成实名认证后购买,配置CPU、内存和存储。确保数据库地域与ECS相同以允许内网连接。创建数据库和账号,设置权限。通过DMS登录数据库,使用账号密码连接。同一VPC内的ECS需添加至白名单以进行内网通信。参考官方文档进行详细操作。
77 3
|
27天前
|
弹性计算 关系型数据库 MySQL
阿里云MySQL云数据库优惠价格、购买和使用教程分享!
阿里云数据库使用流程包括购买和管理。首先,选购支持MySQL、SQL Server、PostgreSQL等的RDS实例,如选择2核2GB的MySQL,设定地域和可用区。购买后,等待实例创建。接着,创建数据库和账号,设置DB名称、字符集及账号权限。最后,通过DMS登录数据库,填写账号和密码。若ECS在同一地域和VPC内,可内网连接,记得将ECS IP加入白名单。
429 2
|
28天前
|
存储 SQL 数据管理
阿里云数据库 SelectDB 内核 Apache Doris 如何基于自增列满足高效字典编码等典型场景需求|Deep Dive 系列
自增列的实现,使得 Apache Doris 可以在处理大规模时展示出更高的稳定性和可靠性。通过自增列,用户能够高效进行字典编码,显著提升了字符串精确去重以及查询的性能。使用自增列作为主键来存储明细数据,可以完美的解决明细数据更新的问题。同时,基于自增列,用户可以实现高效的分页机制,轻松应对深分页场景,有效过滤掉大量非必需数据,从而减轻数据库的负载压力,为用户带来了更加流畅和高效的数据处理体验。
|
28天前
|
SQL 关系型数据库 MySQL
阿里云mysql数据库价格购买和使用教程
阿里云数据库使用指南:购买MySQL、SQL Server等RDS实例,通过选择配置、地域和可用区完成购买。创建数据库和账号,分配权限。使用DMS登录数据库,进行管理操作。确保ECS与RDS在同一地域的VPC内,配置白名单实现内网连接。详细步骤见官方文档。
629 1

热门文章

最新文章