弹性计算架构、容量性能数据库优化,让双11有惊无险

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 9月23日由阿里云主办的第六期《电商大咖直播:备战双11最佳实践》线上分享圆满结束,来自袋鼠云的联合创始人CTO宁海元分享了天猫双11的技术保障,阿里云弹性计算的架构,袋鼠云进行容量规划、性能压测、数据库优化的经验。

全面赋能,双11电商解决方案上新,全新75折:https://www.aliyun.com/solution/ecommerce/act/huhang1111


9月23日由阿里云主办的第六期《电商大咖直播:备战双11最佳实践》线上分享圆满结束,来自袋鼠云的联合创始人CTO宁海元分享了天猫双11的技术保障,阿里云弹性计算的架构,袋鼠云进行容量规划、性能压测、数据库优化的经验。

本次视频直播的整理文章整理完毕,如下内容。


袋鼠云简介

袋鼠云由多名前阿里云资深技术专家创立,核心员工来自阿里巴巴、神州数码、数梦工场等,作为阿里云重要的合作伙伴,专注于为企业客户提供云计算和大数据技术服务及产品。袋鼠云是阿里云数加平台首个金牌合作伙伴,也是阿里云认证的区域服务商和云市场供应商。

天猫:“双十一”的技术保障

e3dfc3af07224046f14c1d8a176290a80a49c08e

天猫的技术保障分为三层:后勤保障、组织保障、系统保障,每个环节都是非常重要的。

97cb00f4c8a459b492f85ded5c35843f52a1156b

天猫的技术也经历了不断的演进。最初面对的最大问题是流量问题,CDN成为了第一个瓶颈,进行了CDN扩容。之后,逐渐经历了全链路压测、单元化、同城双活、异地多活、弹性混合云。在技术上,越来越游刃有余的支撑天猫的大促,同时也会把这些沉淀下来的技术变成产品给阿里云的客户提供服务。

阿里云:弹性计算与大促

9bc4710aaa8d573f7a8ea7ee21cc329c638f8775

弹性是云计算的最大优势,大促是最典型的弹性场景。从官网上看,阿里云包括四大产品线:云计算基础产品线、大数据产品线、云安全产品线、运维和虚拟组件产品线。经常用到的产品如上图所示,比较常见的有负载均衡、云服务器、云数据库等。比较少见的,比如性能测试PTS在做大促的时候是一个非常重要的工具,因为它可以通过分布式的压测工具去以最大的能力压测我们能达到的最大压力。在安全方面,DDos高防IP可以防几十G以上的流量的DDos攻击。当一台数据库达到上限的时候,分布式数据库DRDS可以使压力线性扩展。

2fb8ecbe6fdbe708844ff50ac1b4b3af168d520d

上图是阿里云弹性系统的一个典型架构。从用户的角度,他会把流量打到负载均衡上,通过DDos高防IP使得只有正常的流量可以进入负载均衡。在负载均衡后面后一个可以弹性伸缩的ECS应用服务器,其中要注意的一点是所有数据要设置成无状态。云数据库Redis版可以缓存一些不需要更新的数据,云数据库的RDS可以即开即用,如果压力过大时可以改为分布式数据库DRDS,同时可以做一些读写分离。

69525f45e182d0cdf7959d304ec1afb08f059b26

安全也是阿里云一个非常重要的能力。高防IP可以提供20G以上防护带宽,防DDos攻击、cc攻击、Web攻击,防网页篡改。

袋鼠云:大促活动护航服务

3a31bfad133f145916dba418d6415f24810a088a

前期架构改造时会做一些架构咨询。从早期的容量规划到性能压测、应用优化、数据库优化,再到扩容、应急预案准备、大促当天在线应急保障。

容量规划

d53f142e9e1bfb992f44b6523bd9c2a9a20ff70d

我们首先要看的是整个的业务目标,业务目标里面是否有一些特殊的场景,比如秒杀的场景。有了业务的目标之后,我们就能定出技术目标,比如QPS和TPS的目标,秒杀应该用什么样的方案,在线应该重点关注哪几个场景。

性能压测

2004a0c402f8224a814c0418550abf2aaca7c51f

确定了容量规划的指标之后,我们就可以做压测了。阿里云PTS是全球领先的SaaS性能测试平台,具有强大的分布式压测能力,可模拟海量用户真实的业务场景,让应用性能问题无所遁形。经过几次的压测之后,就会对上线之后的性能表现有了预估。

数据库优化

b189d21cf5a683d70c14f674d8a82aa567c9e19c

优化思路:数据库里80%的场景可能因为SQL语句写的不好,比如索引没有用上,表结构存在问题,所以应该对SQL进行优化。RDS是存在配置问题,所以应该对RDS进行配置升级。如果有数据分析的需求,最好在当天开一个只读识别,一个RDS可以开5个只读识别,进行读写分离保证主库的交易更加顺畅。垂直拆分和水平拆分在大促之前通过压力测试决定是否去做。

总结来说,大促会遇到以下几个常见问题:

  • 最典型的是容量预估不足,系统直接崩掉;
  • 临时出问题,临时改代码,结果出大问题;
  • 秒杀导致数据库挂,系统挂;
  • 缺乏应急方案,缺乏应急流程和具体的执行步骤;
  • 缺监控平台,缺实时的应用/数据库指标监控,不知道系统大促的整体情况;
  • 数据库是关键点,出问题需要快速决策和执行。

应急预案实例

fb0f639c9ed8f8a1112dabea00fb82939f50511d

在双11的的前一个月,需要把面对各种情况的预案写下来,发给相关的责任人。

客户案例

某社区电商大促

56f252b4771244fbeddc1f85d509d837ba15bed0

提前一周开始做紧张的压测,效果不错。

7:00:当天大促的活动慢慢开始,流量开始上涨。

9:00:第一波秒杀开始,出现大量connection timeout,连接数全部爆满,客服接到大量投诉电话,投诉秒杀是个骗局。系统表现上,应用压力非常高,数据库大量锁等待,数据库跑不动。

9:30:应用扩容,数据库优化。

10:00:第二波秒杀继续,数据库还是大量的锁等待,系统挂掉。

持续的修改代码,数据库优化,商品调整。。。

13:00:秒杀稳住了,系统平稳。

该案例中主要做了数据库优化、SQL的优化,扩容。

某跨境电商大促

2016年3月大促,蜂拥而来的流量造成系统宕机,每秒订单量到达峰值。袋鼠云进行了如下优化:云架构优化,帮助客户减少不必要的云资源支出,节省了大量成本;数据库SQL与索引优化,解决了宕机的根本性问题,轻松应对大促;重新设计的可扩展架构,确保在未来的业务增长过程中,技术不再成为瓶颈;数据库专家包年服务,7*24监控数据库性能状况,及时响应和优化,大大降低了客户的DBA运维成本,又确保了数据库的稳定。


相关系列文章:

相关文章
|
JavaScript 关系型数据库 MySQL
❤Nodejs 第六章(操作本地数据库前置知识优化)
【4月更文挑战第6天】本文介绍了Node.js操作本地数据库的前置配置和优化,包括处理接口跨域的CORS中间件,以及解析请求数据的body-parser、cookie-parser和multer。还讲解了与MySQL数据库交互的两种方式:`createPool`(适用于高并发,通过连接池管理连接)和`createConnection`(适用于低负载)。
17 0
|
21天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
|
1月前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
1月前
|
SQL 存储 JSON
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
亲爱的社区小伙伴们,Apache Doris 2.1.0 版本已于 2024 年 3 月 8 日正式发布,新版本开箱盲测性能大幅优化,在复杂查询性能方面提升100%,新增Arrow Flight接口加速数据读取千倍,支持半结构化数据类型与分析函数。异步多表物化视图优化查询并助力仓库分层建模。引入自增列、自动分区等存储优化,提升实时写入效率。Workload Group 资源隔离强化及运行时监控功能升级,保障多负载场景下的稳定性。新版本已经上线,欢迎大家下载使用!
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
|
1月前
|
SQL NoSQL 前端开发
基于BS架构的饰品购物平台设计与实现(程序+文档+数据库)
基于BS架构的饰品购物平台设计与实现(程序+文档+数据库)
|
1月前
|
存储 搜索推荐 关系型数据库
深度探讨数据库索引的数据结构及优化策略
深度探讨数据库索引的数据结构及优化策略
|
1月前
|
存储 关系型数据库 MySQL
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
172 0
|
21天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
8天前
|
SQL 缓存 Java
Java数据库连接池:优化数据库访问性能
【4月更文挑战第16天】本文探讨了Java数据库连接池的重要性和优势,它能减少延迟、提高效率并增强系统的可伸缩性和稳定性。通过选择如Apache DBCP、C3P0或HikariCP等连接池技术,并进行正确配置和集成,开发者可以优化数据库访问性能。此外,批处理、缓存、索引优化和SQL调整也是提升性能的有效手段。掌握数据库连接池的使用是优化Java企业级应用的关键。
|
9天前
|
SQL 关系型数据库 数据库
【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?
【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
35 3