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

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 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运维成本,又确保了数据库的稳定。


相关系列文章:

相关文章
|
6天前
|
SQL 关系型数据库 分布式数据库
PolarDB Proxy配置与优化:提升数据库访问效率
【9月更文挑战第6天】PolarDB是阿里云推出的高性能分布式关系型数据库,PolarDB Proxy作为其关键组件,位于客户端与PolarDB集群间,负责SQL请求的解析与转发,并支持连接池管理、SQL过滤及路由规则等功能。本文详细介绍了PolarDB Proxy的配置方法,包括连接池、负载均衡和SQL过滤设置,并探讨了监控调优、缓存及网络优化策略,以帮助提升数据库访问效率。
15 1
|
6天前
|
存储 关系型数据库 MySQL
如何优化数据库查询?
如何优化数据库查询?
19 1
|
10天前
|
缓存 安全 Java
如何利用Go语言提升微服务架构的性能
在当今的软件开发中,微服务架构逐渐成为主流选择,它通过将应用程序拆分为多个小服务来提升灵活性和可维护性。然而,如何确保这些微服务高效且稳定地运行是一个关键问题。Go语言,以其高效的并发处理能力和简洁的语法,成为解决这一问题的理想工具。本文将探讨如何通过Go语言优化微服务架构的性能,包括高效的并发编程、内存管理技巧以及如何利用Go生态系统中的工具来提升服务的响应速度和资源利用率。
|
11天前
|
前端开发 C# 设计模式
“深度剖析WPF开发中的设计模式应用:以MVVM为核心,手把手教你重构代码结构,实现软件工程的最佳实践与高效协作”
【8月更文挑战第31天】设计模式是在软件工程中解决常见问题的成熟方案。在WPF开发中,合理应用如MVC、MVVM及工厂模式等能显著提升代码质量和可维护性。本文通过具体案例,详细解析了这些模式的实际应用,特别是MVVM模式如何通过分离UI逻辑与业务逻辑,实现视图与模型的松耦合,从而优化代码结构并提高开发效率。通过示例代码展示了从模型定义、视图模型管理到视图展示的全过程,帮助读者更好地理解并应用这些模式。
27 0
|
11天前
|
C# UED 定位技术
WPF控件大全:初学者必读,掌握控件使用技巧,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,控件是实现用户界面交互的关键元素。WPF提供了丰富的控件库,包括基础控件(如`Button`、`TextBox`)、布局控件(如`StackPanel`、`Grid`)、数据绑定控件(如`ListBox`、`DataGrid`)等。本文将介绍这些控件的基本分类及使用技巧,并通过示例代码展示如何在项目中应用。合理选择控件并利用布局控件和数据绑定功能,可以提升用户体验和程序性能。
26 0
|
11天前
|
缓存 Java Spring
Spring缓存实践指南:从入门到精通的全方位攻略!
【8月更文挑战第31天】在现代Web应用开发中,性能优化至关重要。Spring框架提供的缓存机制可以帮助开发者轻松实现数据缓存,提升应用响应速度并减少服务器负载。通过简单的配置和注解,如`@Cacheable`、`@CachePut`和`@CacheEvict`,可以将缓存功能无缝集成到Spring应用中。例如,在配置文件中启用缓存支持并通过`@Cacheable`注解标记方法即可实现缓存。此外,合理设计缓存策略也很重要,需考虑数据变动频率及缓存大小等因素。总之,Spring缓存机制为提升应用性能提供了一种简便快捷的方式。
20 0
|
11天前
|
Java XML Maven
跨越时代的飞跃:Struts 2 升级秘籍——从旧版本无缝迁移到最新版,焕发应用新生!
【8月更文挑战第31天】随着软件技术的发展,Struts 2 框架也在不断更新。本文通过具体案例指导开发者如何从旧版平滑升级到 Struts 2.6.x。首先更新 `pom.xml` 中的依赖版本,并执行 `mvn clean install`。接着检查 `struts.xml` 配置,确保符合新版本要求,调整包扫描器等设置。审查 Action 类及其注解,检查配置文件中的弃用项及插件。更新自定义拦截器实现,并验证日志配置。最后,通过一系列测试确保升级后的系统正常运行。通过这些步骤,可以顺利完成 Struts 2 的版本升级,提升应用的安全性和性能。
36 0
|
11天前
|
开发者 前端开发 JavaScript
如何解锁Play Framework的模块化力量?揭秘构建未来Web应用的关键策略
【8月更文挑战第31天】在现代软件开发中,模块化设计对于构建可维护和可扩展的应用程序至关重要。Play Framework作为一个高性能Web应用框架,提供了强大的模块化支持,使开发者能够将应用分解为独立且可重用的模块。本文将探讨Play Framework中模块化设计的最佳实践,并通过示例代码展示如何创建模块、使用依赖注入管理模块依赖、模块化前端资源及测试模块,帮助开发者构建结构清晰、易于维护和扩展的应用程序。
22 0
|
11天前
|
开发者 Java
Play Framework深度解析:依赖注入的神秘力量,如何助力Web应用架构优化?答案即将揭晓!
【8月更文挑战第31天】依赖注入(DI)是现代软件开发的关键技术,用于分离对象创建与依赖关系,提升代码的可维护性和可测试性。Play Framework是一款高性能Java Web框架,内置了基于Google Guice的DI支持。本文探讨Play Framework中DI的最佳实践,包括定义组件、构造函数注入、字段注入以及作用域控制和自定义绑定等高级特性,帮助开发者轻松构建结构清晰、可维护性高的Web应用。
23 0

热门文章

最新文章