双11特刊 | 一文揭秘云数据库RDS如何顺滑应对流量洪峰-阿里云开发者社区

开发者社区> 大涛学长> 正文

双11特刊 | 一文揭秘云数据库RDS如何顺滑应对流量洪峰

简介: 从绿色低碳到硬核科技,看RDS如何用绿色科技助力2021“双11”?
+关注继续查看

阿里云数据库已连续多年稳定支撑天猫双11,历经极端流量场景淬炼。除了保障稳定顺滑的基本盘,今年大促期间数据库通过全面云原生化,大幅提升用户体验,让技术帮助业务产生更有价值的消费者体验,持续通过技术创新赋能用户,引领技术发展路径。

双11已圆满落幕,但技术的探索,仍未止步。“阿里云数据库” 公众号特此推出《好科技的新起点——2021双11阿里云数据库技术揭秘》系列干货文章,为你讲述年度“技术大考”背后的故事,敬请关注!


双十一回顾


从平台到商家,再从物流到客户手中,云数据库RDS支撑着双11集团电商的在线业务。RDS首次对集团核心业务进行国产化技术演进试点,具备x86等同性能并兼顾稳定性。针对大促态瞬间大量流量请求场景,内核通过分库分表级别的多点写、热点更新优化、Statement Queue及慢SQL限流等深度内核优化,同时搭配资源独共享混部调度能力,使张北单元大促成本下降30%+绿色低碳稳定的轻松应对逐年递增的流量洪峰。


RDS集团业务支撑


2019年,集团上云战役开始;到目前为止,集团交易相关RDS已经实现100%云化。当然,上云的背后离不开RDS的针对大B客户上云的后台技术支撑。在资源充足的情况下,通过系统优化一键上云成功率已达到99%。同时,新开深圳、德国、美东等物理Region支持全球集团业务。对于阿里技术团队来说,每年最闪亮的时候就是双11;很多人最感兴趣的是阿里如何做到顺滑的应对这种类似DDOS的洪峰流量的。下面我为大家一一揭秘业务玩法。


大促态集团异地多活


每年双十一的前几周,对于RDS团队来说,最迫切的事情是需要进行大促新单元建站。受资源交付影响,今年时间压缩得比较紧张,相当于三天就需要搞定整个核心集群的建站工作,为业务分流压测做准备。相比去年的人海战术,今年通过RDS自研的内部运维系统督威,快速完成了建站、全网扩容、调参以及巡检一致性校验等相关的工作,为业务分流压测提供足够的时间来保证稳定。


异地多活可以根据用户的流量Region来识别在任意单元进行交易,在大促态时可以做到各单元自闭,同时提供写能力。这样能充分的分担峰值流量,提供更稳定的服务。


核心交易集群的实例日常态有两套独立的三节点集群,他们之间通过DTS进行双向复制。在大促态需要再增加一套三节点集群,这样基于单元能分担更多的读写流量,做到单元自闭,各单元可同时读写。大家也许有疑问,同时写会不会产生主键冲突,怎么保证数据不会写错。这里集团RDS用到了DTS的Store和Writer,Writer主要将Store上的日志应用到对应单元去,又通过Store,由Writer反写回去,两套RDS之间数据表用不同的步长,做到防止主键冲突。传统的防循环复制都是通过事务表来实现,而事务表性能表现不佳。通过Thread ID既能实现防循环复制,又能提升性能。


image.png


全球只读和异地容灾


为满足用户按地域读流量快读访问的业务场景,RDS提供全球只读实例,异地只读实例作为一个Learner加入到集群中,不参与主实例三节点的选举,只同步数据和提供读流量,复制采用基于Xcluster内核的原生复制来保证一致性。同时为满足RPO=0的容灾能力,单个只读实例提供同AZ两副本,针对RDS实例非健康状态能快速切换来保证高可用,同时也提供机房容灾能力。


image.png

内核Xcluster多点写玩法


集团针对库存业务,新增Xcluster内核提供多点写能力,可以保证主备同时可写,且没有锁冲突,能更进一步的利用容灾的备库资源,分担读写性能。该形态相当于在内核层面实现分库的Group级别的单向复制能力,类似MySQL中的Channel通道复制,该功能的好处是可以实行库级别的多点写入,主备同时提供读写能力,各自独立数据通道互不影响,也不会有冲突问题,在满足性能的同时更好的利用了备库,也节约了资源。当然单个节点RDS服务不健康的时候,HA能够快速的Failover过去,并实现故障转移,能提供高可用服务。当然考虑到故障转移流量都路由到一个节点场景,需要也能满足业务需求,是性价比折中的形态。


image.png


底座ARM国产化试点


在2020年的双十一中,我们的ARM国产化主要是MySQL+Ext4文件系统。今年我们在性能上做了更进一步的突破。


大家都知道普通的MySQL记录写入是过程是MySQL->OS->文件系统->写磁盘。由于数据库底层用的是分布式存储,而底层存储可以提供标准的POSIX给客户端,因此我们在这方面做了很多性能优化的工作。


今年ARM MySQL国产化通过内核态改到用户态这样的改造,MySQL直接对接底层文件系统POSIX协议提升效率。


在完成上述改造以后,ARM节点部署在线上核心链路上并承担复制流量。 


绿色低碳


在全球倡导绿色低碳的同时,作为技术人,我们用技术来响应全球的号召,使今年的双十一张北单元大促成本下降30%+,在稳定性兼顾的同时做到绿色低碳。


RDS资源调度新创独共享混部


每年双十一核心集群会有独立部署要求,当性能出现临近点扩容时,就会造成资源浪费。今年新创的独共享混部能力,将核心集群的实例和其他长尾实例混部,实现资源整合。张北混部单元今年全面采用这项技术,节省CPU核心数量4.5万个;结合交易业务云盘化,张北单元整体大促成本下降 34.5%。在每个Node上,ECS主要分为几个资源模块。首先是主机预留,用于系统和对应管控组件,预留之外的都作为资源池给RDS使用,可分配独享实例(相当于进行绑核独享),也可以分配共享实例(相当于独享和预留之外的核数用于共享使用)。这里CgroupController除了需要能够为独享实例绑定CPU核心以外,还需要维护共享实例的CPU资源池。


CgroupController会记录当前节点上独享CPU和共享CPU的核心分布,当节点上的独享实例发生变化时,动态调整Node上共享Pod的可用的CPU列表。例如,当前Node节点预留CPU:[0-1],调度了一个独享实例占用CPU:[2-3],CgroupController会计算当前Node节点上的共享CPU=总的CPU-Node预留-独享CPU,并将共享Pod全部绑定到共享CPU核心上。当再调度一个独享pod,CgroupController会更新共享CPU核心,并刷新主机上所有共享POD绑定的CPU核心。


image.png


传统的服务器部署MySQL实例有上限,RDS通过调整部署策略进行了突破,如独共享混布,神龙ECS挂盘上限提升,调整IO策略等提升机器密度。通过技术手段节省一半的机头数来部署小规格实例,进一步的提升部署密度,节约大促资源。


业务属性反亲和灵活调度


RDS提供更丰富的资源调度打散策略能力,满足按照业务自定义属性实现打散,进一步提升灵活调度能力。举一个场景,在今年双11前,集团的核心数据库都在云上,但是集团对于不同的业务的数据库有着不同的调度需求,例如交易库必须独占,库存的数据库必须单机两实例。面对这个业务需求场景的时候,按照以往的调度逻辑,都是在集群资源池中来找最优解,这个逻辑肯定无法解决集团的业务调度需求,RDS针对这种场景在业务和资源调度层面增加反亲和性资源调度标识,可以根据业务场景需求来实现单机业务属性的灵活资源调度部署。


RDS内核特性


如何实现RPO=0?


阿里巴巴集团电商全部使用的是RDS三节点企业版,包括主节点(Leader)、备节点(Follower)、日志节点(Logger),通过Paxos协议做到RPO等于0。主要有几个特性: 


  • Leader会把待提交的事务传输到其他节点,当达到多数派后在Leader节点上做事务提交;
  • 当Leader Crash的时候,新的Leader节点会通过自己本地的日志+其他节点日志补全日志并回放完成后,会接受新的事务;
  • 日志节点仅Binlog日志和一些基础的数据字典信息,这样做的好处是既能满足Paxos协议的多数派,又能节省成本,和MySQL的MGR形成差异化。

 image.png

如何跟踪识别限流?


今年的双11,RDS内核做了深度优化,特别是分库分表级别的多点写、Statement Queue及慢SQL限流这块。针对业务系统大促态等特别业务场景,RDS在运行时短时间内突然收到大量的高资源占用的查询请求(例如慢SQL或者OLAP类请求或者极高并发的burst流量),将会造成此时间段内RDS内部的线程池资源被耗尽而无法对其他请求进行服务,从而使得整体性能急剧下降,对业务造成巨大影响,整个过程如下:


image.png


RDS内核采用的线程池模型,当新Query需要获取内核CPU资源时首先获取线程资源, 进而由操作系统内核调度获取CPU资源,而高消耗资源SQL的存在会导致新的SQL获取到的CPU时间片少同时线程过多会导致难以获取到CPU资源。


如上图, 一个Work线程会同步等待Innodb的读写结果, 因此在Query IO时间内, 线程资源被当前Query占据。Worker线程数量限制为Thread_pool_size *Thread_pool_oversubscribe, 当有大量Slow Query到来占据线程池资源, 则后续请求无法进去Worker被执行(或者进入线程池后因为IO资源被Slow Query占用而导致IO 等待, 进而恶化线程池资源地释放)。


为减轻Slow Query造成的负面影响,内核基于Statement Digest实现SQB的慢查询检测和限流功能,RDS管控进行了新的内核小版本发布,集团RDS实例全部升级到该版本,实现了100%实例覆盖,进一步的提升性能和RDS稳定性。


Slow Query Blocker分为两个子模块: 慢查询模式匹配过滤模块和检测模块。


image.png

匹配过滤模块将根据历史上已发现的Slow Query模式列表, 对匹配上列表中任意模式且并发度达到设定并发度上线的的当前Query语句进行已定义的应对动作。


检测模块分为两个部分:


在普通SQL语句执行之后, 判断其是否是慢查询, 是则插入到慢查询模式列表中根据既定的Slow Query检测策略, 周期性检测Threadpool,测算运行Thread当前执行的Query语句是否超时(Slow Query)。 如果是, 则将当前Slow Query的模式记录到模式列表中供过滤模块使用. 根据自定义的Slow Query类型, 还可以自定义该类型Slow Query对应的限流动作,该动作将在限流模块检测到匹配的Query后执行。


内核开启SQB限流功能后,能看到以下现象,对于业务正常的SQL是不受影响的,能正常的请求并获取结果,而不会因为SlowQuery导致的线程池耗尽导致不可服务,进一步提升RDS的稳定性,最大限度的减少用户业务的影响。


image.png


未来展望


目前各大云厂商都在进行RDS IPV6技术演进,我们也在快速迭代中,接下来集团部分业务会切到双栈模式。同时,我们也在推进RDS国产化,目前已有部分集团电商交易业务国产化试点。在资源调度方面我们也在探索和推进大混部形态,更进一步的降低大促成本。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9496 0
双11核心系统100%上云 !阿里数据库处理峰值远超传统厂商
刚刚结束的天猫双11创下了两项新记录:交易额2684亿,订单峰值54.4万笔/秒,阿里巴巴集团CTO张建锋在当晚宣布,双11核心系统100%上云,背后作为数据核心支撑的自研数据库OceanBase和POLARDB每秒处理峰值都远远超越传统Oracle数据库。
950 0
新一代数据库技术在双11中的黑科技
12月13-14日,由云栖社区与阿里巴巴技术协会共同主办的《2017阿里巴巴双11技术十二讲》顺利结束,集中为大家分享了2017双11背后的黑科技。本文是《新一代数据库技术在双11中的应用》演讲整理,本文主要从数据库上云和弹性调度开始谈起,重点分享了新一代数据库以及其在双11中的应用,包括X-DB、X-KV和ESDB等。
3253 0
【双11背后的技术】AliCloudDB——双11商家后台数据库的基石
作者:玄惭 前言 2016年天猫双11购物狂欢节已经完美落下帷幕,千亿成交的背后,作为整个天猫商家后台数据库的基石,AliCloudDB是如何保障在零点洪峰来临时候稳定、安全和顺畅?如此庞大规模的数据库实例集群又是怎样一步步成长起来的?AliCloudDB团队核心老司机玄惭,为你带来,双11是这
3672 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13184 0
2017双11技术揭秘—双十一海量数据下EagleEye的使命和挑战
EagleEye作为阿里集团老牌的链路跟踪系统,其自身业务虽不在交易链路上,但却监控着全集团的链路状态,特别是在中间件的远程调用上,覆盖了集团绝大部分的场景,在问题排查和定位上发挥着巨大的作用,保障了各个系统的稳定性,为整个技术团队打赢这场战役保驾护航。
5320 0
【双11背后的技术】双11背后的大规模数据处理
【双11背后的技术】总目录:https://yq.aliyun.com/articles/68637 —————————————————————— 作者:惠岸 朋春 谦乐  1. 实时数据总线服务-TT TimeTunnel(TT)在阿里巴巴集团内部是一个有着超过6年历史的实时数据总线服务,它是前台在线业务和后端异步数据处理之间的桥梁。
4922 0
【Work Like Alibaba】 时间紧、任务重的2017双11数据大屏项目如何实现高效协作
阿里巴巴在面对重要紧急项目中是如何高效协作和把控质量的?在阿里,不同岗位的员工如何高效协作?本文将带大家换一个视角感受阿里员工是如何思考和解决问题的,从阿里2017双11数据大屏项目设计师的角度探讨如何寻找“完美”设计与项目规划的平衡点。
3373 0
【双11背后的技术】万亿级数据洪峰下的分布式消息引擎
作者:冯嘉、誓嘉、尘央、牟羽  前言 通过简单回顾阿里中间件(Aliware)消息引擎的发展史,本文开篇于双11消息引擎面临的低延迟挑战,通过经典的应用场景阐述可能会面临的问题 - 响应慢,雪崩,用户体验差,继而交易下跌。
5777 0
+关注
大涛学长
分享文章~
34
文章
0
问答
来源圈子
更多
阿里云数据库:帮用户承担一切数据库风险,给您何止是安心!支持关系型数据库:MySQL、SQL Server、PostgreSQL、PPAS(完美兼容Oracle)、自研PB级数据存储的分布式数据库Petadata、自研金融级云数据库OceanBase支持NoSQL数据库:MongoDB、Redis、Memcache更有褚霸、丁奇、德哥、彭立勋、玄惭、叶翔等顶尖数据库专家服务。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载