3.1.4 北京冬奥压测调优总结
北京冬奥一共有30多个子系统在云上,我们针对部分核心子系统进行了全面的全链路压测,以确保赛时不会出现系统瓶颈,下面具体介绍其中两个系统的压测过程,即冬奥通APP系统和冬奥云展厅系统。
3.1.2.1 冬奥通APP压测总结
冬奥通APP是北京冬奥组委为包括运动员、志愿者、媒体人员、赛会工作人员及普通观众等所有赛事参与者推出的移动端APP,集成了各种角色在本次赛会期间会使用到的功能模块。从业务上,可以分为16个模块,包括高频的首页、路由、配置中心、奖牌榜、组织、组织应用授权、打卡、餐饮、IM等模块,以及低频核的统一身份认证、个人授权、赛事赛程等模块。冬奥通APP系统全面运行在阿里云上,主要使用的产品是阿里云DCDN、SLB、ACK、ECS、RDS等,为保证安全性,整体划分为DMZ和Trusted区,用户请求流量经DCDN接入,过WAF后通过EIP+SLB(前端SLB)上到云内,先到DMZ区的前端代理服务进行初步处理,再转发至Trust区的后端服务上。在DMZ区和Trust区各部署一个大型ACK集群,分别运行各功能模块的前端代理服务和后端功能服务,各功能模块以K8S1pod的形式存在,共享ACK集群节点,由ACK进行调度,DMZ区和Trust区之间用一批SLB做中间层转发(后端SLB),部分后端服务需要再VPC内访问数据库进行读写操作。整体来讲,冬奥通APP是一个比较标准的云上系统。
如前所述,在制定压测方案前,我们基于业务目标明确了本次压测需要取得的最终目标,即为高频模块达到x并发和低频模块达到x并发,并保证错误率小于0.01%,RT小于3s。
链路梳理方面,在压测前,我们先梳理了全部16个模块详细的网络链路,以路由模块为例:
用户->冬奥通APP->SLB3(lb-xxx,七层,443端口)->DMZ1ECS上的nodeport:xxx(xxx端口)->SLB7(lb-xxx,七层,xxx端口)-->Trusted区ingress1pod:xxx(七层)->Trusted区pod: xxx(路由服务)
其余几个模块简化版链路如下,不再一一赘述:
奖牌榜模块:用户->冬奥通APP->SLB1->DMZ区ECS1-1系列前端pod->SLB5->Trusted区ECS2-1系列服务pod 打卡模块:用户->冬奥通APP->SLB1->H5前端pod->SLB5->打卡服务(和RDS实时交互)->组织开放平台服务
餐饮模块:用户->冬奥通APP->SLB1->H5前端服pod->SLB5->餐饮服务
IM登录模块:用户->冬奥通APP->SLB2端口xxx–>DMZ区ECS1-2上nodeport:xxx->ipvs->SLB6-> Trusted区ECS2-2系列xxx->xxx->RDS MySQL服务赛事赛程模块:用户->冬奥通APP->SLB1->DMZ区ECS1-1系列pod->SLB5->Trusted区ECS 2-1系列服务pod
埋点模块:用户->冬奥通APP->SLB3-->SA(nginx ECS)
事实证明,事前的详细链路梳理,对于排查压测问题非常有帮助,在压测到性能瓶颈时,我们根据梳理好的链路,迅速切入排查找到了瓶颈点,即便是比较疑难的问题,最终也没有过夜。
《云上大型赛事保障白皮书》——第三章 压测调优与技术演练——3.1 云上大型赛事压测调优——3.1.4 北京冬奥压测调优总结(2): https://developer.aliyun.com/article/1226562?groupCode=supportservice