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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 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的保障经验沉淀到专家系统中,只有这样才能将其作用最大化,规模化,可复制化,让用户真正简单方便的得到实惠。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
Cloud Native 关系型数据库 分布式数据库
阿里云牵手海亮科技,共建“教育科技数据库创新应用中心”
海亮科技选择引入阿里云PolarDB开源分布式版(PolarDB for Xscale)数据库,不仅能解决海亮科技数据库业务中面临的可靠性、稳定性问题,也为海亮科技业务的高速发展提供了更好的灵活性和可扩展性。
|
3月前
|
运维 数据库 数据库管理
云数据库问题之阿里云在运营商领域数据库替换的整体解决方案要如何实现
云数据库问题之阿里云在运营商领域数据库替换的整体解决方案要如何实现
|
3月前
|
存储 监控 安全
阿里云数据库(ADB)的多租户秘籍:资源隔离的魔法如何施展?
【8月更文挑战第27天】多租户系统在云计算与大数据领域日益重要,它让不同用户或组织能在共享基础设施上独立运行应用和服务,同时确保资源隔离与安全。ADB(如阿里云数据库)通过资源组及标签实现高效多租户隔离。资源组作为一种软隔离策略,允许为不同租户分配独立的计算和存储资源,并设置资源上限;资源标签则支持更细粒度的硬隔离,可为每个数据库表或查询指定特定标签,确保资源有效分配。此外,ADB还提供了资源监控与告警功能,帮助管理员实时监控并调整资源分配,避免性能瓶颈。这种灵活且高效的资源隔离方案为多租户环境下的数据处理提供了强大支持。
146 0
|
5天前
|
运维 监控 关系型数据库
数据库管理中的自动化运维:挑战与解决方案
数据库管理中的自动化运维:挑战与解决方案
|
27天前
|
SQL Java 数据库
Spring Boot与Flyway:数据库版本控制的自动化实践
【10月更文挑战第19天】 在软件开发中,数据库的版本控制是一个至关重要的环节,它确保了数据库结构的一致性和项目的顺利迭代。Spring Boot结合Flyway提供了一种自动化的数据库版本控制解决方案,极大地简化了数据库迁移管理。本文将详细介绍如何使用Spring Boot和Flyway实现数据库版本的自动化控制。
26 2
|
1月前
|
缓存 弹性计算 NoSQL
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
|
1月前
|
安全 NoSQL 关系型数据库
阿里云数据库:助力企业数字化转型的强大引擎
阿里云数据库:助力企业数字化转型的强大引擎
|
1月前
|
存储 NoSQL MongoDB
基于阿里云数据库MongoDB版,微财数科“又快又稳”服务超7000万客户
选择MongoDB主要基于其灵活的数据模型、高性能、高可用性、可扩展性、安全性和强大的分析能力。
|
2月前
|
存储 缓存 关系型数据库
阿里云数据库 SelectDB 多计算集群核心设计要点揭秘与场景应用
在云原生存算分离架构下,多计算集群的实现从技术方案上看似乎并不存在过多难题。但从产品的角度而言,具备成熟易用的多计算集群能力且能运用于用户实际业务场景中,还有较多核心要点需要深度设计
阿里云数据库 SelectDB 多计算集群核心设计要点揭秘与场景应用
|
1月前
|
人工智能 Cloud Native 关系型数据库
阿里云关系型数据库连续五年蝉联榜首
全球领先的IT市场研究和咨询公司IDC发布了《2023年下半年中国关系型数据库软件市场跟踪报告》,2023年阿里云整体市场份额(公有云+本地部署模式)稳居第一,其中公有云市场份额高达39.2%,自2019年起连续5年蝉联榜首。
下一篇
无影云桌面