双十一高并发场景背后的数据库RDS技术揭秘
【战报】11月11日聚石塔(阿里云数据库RDS产品形态)峰值QPS突破X00w,Proxy 峰值QPS超过X00w。
双十一就要来了,全世界都为其疯狂,但是在双十一抢购中经常会出现几万人抢一个红包或者很多人共同购买一个商品的情况,这就引发了一个数据库比较担心的场景----高并发。作为历届双十一重要保障之一的云数据库RDS部门,从参数优化、链路访问、弹性扩容、架构设计等方面应对高并发场景(如秒杀、百万人抢单等),保障双十一顺利进行。那么背后的技术是如何实现的呢?本文,将带您展开双十一阿里云RDS数据库背后技术的小秘密。
参数优化
在处理“高并发”场景的时候,一些特定的数据库参数就成为能否保障数据快速响应和平顺处理“高并发”问题,就成了关键,如下列出了几个特别重要的参数:
•loose_rds_max_tmp_disk_space:控制MySQL能够使用的临时文件的大小;
•loose_rds_threads_running_high_watermark:控制MySQL并发的查询数目,常用于秒杀
•loose_tokudb_buffer_pool_ratio:控制TokuDB引擎能够使用的buffer内存大小
•loose_max_statement_time:控制查询在MySQL的最长执行时间
举例说明,秒杀场景下的参数设置与影响:
loose_rds_threads_running_high_watermark
是“秒杀”场景开始的时候,可以看到连接数成指数级变化,瞬间增加了10倍
调整参数之前,可以看到RUN数量非常高,会导致数据库报警
调整参数之后,update数值与run数值承更好的方向变化
链路访问
在链路访问方面,我们提供更高安全性的数据库代理访问模式,用户可以根据需要随时开启或关闭。数据库代理的规格大小由RDS系统自动管理,可以在保证租户间资源隔离的前提下,根据负载大小自适应调节。数据库代理对应用透明无感知,也无需人工干预,大大降低了运维成本。
如下图所示
数据库代理位于应用程序(Client)和数据库引擎(Database Engine)中间,由RDS系统自动进行维护,所有的数据库请求(Request)和响应(Response)均从代理层经过和处理。
目前,数据库代理支持如下功能:数据库代理支持以下功能:
• 透明切换:RDS实例在发生故障、规格升级或降级时,数据库代理可以使实例切换更加柔和,降低对应用的影响。
• 读写分离:提供透明的读写分离功能,应用层无需修改代码,查询分发到RDS只读实例,降低主库的负载。
• 短连接优化:突发高并发的短连接(常见于PHP应用)在代理层进行缓冲,减轻对DB层的冲击,降低RDS的CPU负载和CPS(每秒新建连接数),保障数据库运行稳定。
• 防暴力破解:保护RDS实例账号密码,规避账号密码被暴力破解。
弹性扩容
在扩容升级的过程中,主要分为两种情况:本机升级和跨机升级
本机升级
跨机升级,还要做备份数据和日志的迁移工作
扩容升级的常见问题
- 为什么有时候升级需要很长时间?
可能发生了跨机迁移,迁移时间受限于数据库大小以及系统压力 - 可用区迁移,数据库版本升级为什么耗时较长?
这两者迁移都会发生跨机迁移 - 空间升级为什么非常快?
空间升级不用重启迁移数据库 - 选择弹性扩容的时间
建议在业务低峰期,最近一次备份任务完成后进行升级
架构设计
为了应对日渐增长的双十一购买数据量和仓储数据量,RDS也对各个支持的数据库进行了新的架构设计。
如下表,引擎选择方面:ApsaraDB for RDS,当前支持4款关系型引擎,提供容灾、备份、恢复、监控等方面的全套解决方案
:
RDS自带的读写分离,让用户使用更方便:
另外,安全问题也一直是商家和用户最关心的问题,在疯狂的‘剁手’中,您一定不想您的商品信息或者购买信息有安全披露,对于这个问题,RDS在安全方面也做了多重保护和设计:

除了以上几点,RDS团队还对数据库的性能等进行了重新的优化,让商家和购买者在抢购中完全不用担心数据库的性能和安全问题,无忧无虑的‘剁手’,尽情享受双十一盛会!
阅读原文
双十一高并发场景背后的数据库RDS技术揭秘的更多相关文章
- 高并发场景-请求合并(二)揭秘HystrixCollapser-利用Queue和线程池异步实现
背景 在互联网的高并发场景下,请求会非常多,但是数据库连接池比较少,或者说需要减少CPU压力,减少处理逻辑的,需要把单个查询,用某些手段,改为批量查询多个后返回. 如:支付宝中,查询"个人信 ...
- 扛住阿里双十一高并发流量,Sentinel是怎么做到的?
Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景 本文介绍阿里开源限流熔断方案Sentinel功能.原理.架构.快速入门以及相关框架比较 基本介绍 1 名词解释 服务限流 :当系 ...
- 阿里云产品介绍(三):云数据库RDS
写完云服务器ECS,本来想先写负载均衡的. 因为发现很多客户,都是直接将单台云服务器应用对外提供访问,如果云服务器宕机,应用就会停止服务.云服务器标称有99.95%的可用率,一年下来宕机四个多小时也是 ...
- 达达O2O后台架构演进实践:从0到4000高并发请求背后的努力
1.引言 达达创立于2014年5月,业务覆盖全国37个城市,拥有130万注册众包配送员,日均配送百万单,是全国领先的最后三公里物流配送平台. 达达的业务模式与滴滴以及Uber很相似,以众包的方式利 ...
- 云数据库RDS SQL Server 版
云数据库RDS SQL Server版是一种可弹性伸缩的在线数据库服务,并具备自动监控.备份.容灾恢复等方面的全套解决方案,彻底解决数据库运维的烦恼 请观看视频简介 SQL Server是发行最早的商 ...
- 云数据库RDS存储能力进化解析!
数据库是企业IT系统的核心,其性能表现会直接影响整体业务系统的性能表现,而影响数据库性能因素包括系统架构设计.应用程序业务SQL语句.数据库参数优化配置.数据库运行的资源能力.系统架构设计和应用程序业 ...
- 高并发场景之RabbitMQ篇
上次我们介绍了在单机.集群下高并发场景可以选择的一些方案,传送门:高并发场景之一般解决方案 但是也发现了一些问题,比如集群下使用ConcurrentQueue或加锁都不能解决问题,后来采用Redis队 ...
- 从运维的角度分析使用阿里云数据库RDS的必要性--你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库
开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库. 云数据库 RDS(Relational Database ...
- Java进阶知识点:并发容器背后的设计理念
一.背景 容器是Java编程中使用频率很高的组件,但Java默认提供的基本容器(ArrayList,HashMap等)均不是线程安全的.当容器和多线程并发编程相遇时,程序员又该何去何从呢? 通常有两种 ...
随机推荐
- MySQL5.6多实例安装
MySQL-5.6.36.tar.gz多实例安装 查看官方安装说明 more INSTALL-SOURCE 安装cmake及相关依赖包 yum install -y cmake gcc [root@v ...
- Js定义一个表单并提交
Js定义一个表单 var form = $("<form>"); //定义一个form表单 form.attr('style', 'display:none'); // ...
- 传统神经网络ANN训练算法总结 参考 。 以后研究
http://blog.163.com/yuyang_tech/blog/static/21605008320146451352506/ 传统神经网络ANN训练算法总结 2014-07-04 17:1 ...
- c++函数overload 的歧义匹配
https://www.zhihu.com/question/20200615 函数重载选择最佳匹配函数涉及到类型转换,默认参数 注意:没有int f(int,int)版本,编译器认为上面两个函数都是 ...
- Jenkins持续集成_02_添加python项目&设置定时任务
前言 自动化测试脚本编写后,最终目的都是持续集.持续集成可以实现一天多次部署运行自动化脚本,对功能进行不断监控测试.由于小编使用python编写的自动化脚本,这里仅讲解下如何在Jenkins中添加py ...
- shtml与html
前言 在浏览网页的时,忽然发现了一个网址不是以[.html]结尾,而是[.shtml].顿时勾起了我的好奇心,这是什么鬼?于是打开google,开始维基. SHTML 什么是 SHTML 使用SSI( ...
- MySQL-第九篇分组和组函数
1.组函数 组函数:即多行函数,组函数将一组记录作为整体计算,每组记录返回一个结果,而不是每条记录返回一个结果. 2.常用的组函数有: 1>avg([distinct|all]expr):计算多 ...
- java排序算法概述
一.概述 1.排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程. 2.排序的分类: 1) 内部排序: 指将需要处理的所有数据都加载到内部存储器中进行排序. ...
- Shell脚本语言学习总结
Shell 是一种脚本程序,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了. 编写第一个Shell 程序 在linux命令行执行 [root@iz2zeexr9tk4ckr7dp ...
- 01 spring循环依赖
作者:Mythsman原文:https://blog.mythsman.com/post/5d838c7c2db8a452e9b7082c/转载自:猿天地原文来自:https://mp.weixin. ...