《云上大型赛事保障白皮书》——第三章 压测调优与技术演练——3.1 云上大型赛事压测调优——3.1.4 北京冬奥压测调优总结(2): https://developer.aliyun.com/article/1226562?groupCode=supportservice
3.1.2.2 云展厅项目压测总结
云展厅项目是北京2022年冬奥会及冬残奥会的官方线上展厅,打造3亿用户在线上与冬奥沟通和互动的乐园,实现奥运的全民参与。“北京2022云展厅”是北京冬奥组委与阿里巴巴携手用科技力量消减疫情影响、实现合作伙伴展示权益的一项创举。按照惯例规则,国际奥委会应为各级别赞助商提供线下品牌宣传等权益。但因疫情影响,此权益的兑现受到严重影响。云展厅则通过数字能力为22个奥赞伙伴提供线上展示,此项创举有望成为后续奥运赞助商权益关系中的有机组成部分。
云展厅打造集奥运展示与互动体验为一体的冰雪狂欢互动城,为参与观众提供线上更丰富多元的沉浸式体验。观众可以通过展示中心一键了解本届奥运的理念,各类奥运知识以及所有奥运品牌的相关历史。除此之外,观众还可通过冰雪狂欢互动城中的系列趣味性、沉浸式互动,感受冬奥氛围,加强与奥运的连接。
“北京2022云展厅”是奥运历史上的首个线上展示平台,也是参与合作伙伴最多的一次(共22家合作伙伴参与),国际奥委会和北京奥组委高度重视本次项目,并拟将项目列入阿里巴巴集团VIK资源,以期实现与IOC的长期合作。
图:云展厅项目业务架构
如上图,冬奥云展厅主要分为4大模块,分别为云展主应用,阿里巴巴展馆,松下展馆,冰雪互动城。云展主应用包含了云展账号、注册、展会信息、咨询、会议、抽奖、数据看板等信息。阿里巴巴展馆和松下展馆是两个主题展馆。冰雪互动城可以让用户进行游戏体验、收集徽章并抽奖。
云资源架构:客户访问云展域名,域名会解析到DDoS,DDoS回源到WAF,WAF在回源到公网SLB,公网SLB后端是部署在EDAS上的Nginx集群,Nginx会对流量进行分流,不同域名或者URL的请求转发到不同的内网SLB,内网SLB后端是真实的业务服务器,主应用使用的是java程序,冰雪&松下是PHP程序。对应的应用会调用Redis,RDS等读取数据库和缓存信息。
常规调用链路:client-->DDOS-->WAF-->公网SLB-->Nginx-->内网SLB-->应用ECS-->Redis/Mysql如果是图片访问会直接请求OSS:Client-->DCDN-->OSS
压测目标:主要功能界面能够达到xQPS。
在第一轮压测的时候大多数接口和页面只能承载xQPS,通过压测发现14个云平台和系统参数相关问题,最后根据业务架构和需求提供优化解决方案,包含资源规格优化、架构优化、数据库请求优化、应用参数优化等,最终实现xQPS的目标。
其中一个比较典型的问题如下:
客户端在调用初始化接口的时候,应用又会去调用用户接口判断用户是否是登录状态,但是应用二次调用用户接口的时候访问的是公网域名,这就导致二次调用的请求会通过自身的公网网关到公网,客户是使用NAT网关提供公网访问的,这时候就会占用NAT网关连接,当请求量增大的时候,占用的NAT的连接数也会成倍增加。而且域名是解析到DDOS上的,所以所有流量又会经过DDOS,WAF,公网SLB等云产品,最终才会到达后端服务器处理,这样不仅仅占用了云产品的带宽,连接数等资源,又由于经过的多个网络组件,导致网络延迟也有一定的增加。
这种场景下可以使用云解析privatezone优化,在业务VPC内配置业务域名,解析到内网的SLB上,这样可以避免二次请求的时候流量从公网绕行,优化网路链路减少云产品资源无效消耗。
调优前网络链路:客户端发起初始化请求-->DDOS-->WAF-->公网SLB-->Nginx-->内网SLB-->应用ECS发起用户登录验证请求-->NAT-->DDOS-->WAF-->公网SLB-->Nginx-->内网SLB-->应用ECS
调优后网络链路:客户端发起初始化请求-->DDOS-->WAF-->公网SLB-->Nginx-->内网SLB-->应用ECS发起用户登录验证请求-->内网SLB-->应用ECS
全部的问题列表及解决方案如下:
最终,通过压测和调优,我们保证了主要接口和界面可以顺利支持xQPS访问请求。在整个奥运赛事期间,云展厅项目一共实现了608万访客人次和7600万线上总访问量,圆满完成了任务。