病毒肆虐,举国抗击。在疫情防控关键时刻,口罩等防疫用品的供给秩序成了社会各界关注的热点。在疫情扩大、口罩供需矛盾突出的严峻形势下,湛江市政府紧急储备,上线口罩购买预约系统用于解决广大市民口罩购买问题,实现政府科学、高效、精准的向全市居民分配防疫口罩。广东移动云作为此次平台建设的合作方,需要提供完整云主机、网络及基础支撑服务保障政府系统的稳定运行,助力国家全面防控疫情。
01.需求调研阶段
我们对口罩预约系统现状进行调研,湛江市民近八百万,系统每日的口罩提供量十万,通过挂载到“湛江政府网”微信公众号的H5网页发布,微信关注人数预计会超过一百万,并且每日递增。口罩预约分为两个时间段,每日12点、15点发放预约,每个阶段抢购时限为1小时,预约成功的需在第二天14- 16点和16-18点完成口罩核销。按照现行微信粉丝人员60%计算,每天预测相关时间段至少有60万的并发访问量。下图为需求调研会议照片。
鉴于口罩预约系统高并发,大流量的特点,在秒杀时间点对服务器及网络带宽需求很高。移动云具备安全稳定、资源丰富、弹性伸缩等天然优势能够给予充分支持。结合系统的秒杀业务场景对服务器的需求及对流量(60W)预测分析,规划投入网页服务器、接口服务器、数据库服务器等共计102台云主机、负载均衡2台,开通内存总计4704G,CPU 1752核,开通带宽9Gbps,允许并发连接数1000000路以满足系统在大流量下的稳定运行,保障抗疫情工作顺利开展。
02.上线准备阶段
根据售前需求调研情况,湛江口罩预约系统属于典型的秒杀业务场景,系统需要具备支撑高并发、抗高IOPS能力,总体设计思路如下:
1、限流:请求拦截在系统上游,压低下游压力,如某段时间用户允许重复提交。
2、销峰:利用缓存及消息中间件技术将高流成平稳流量,避免持续高流量压垮系统。
3、异步处理:程序通过异步处理机制可以极大提升系统并发量。
4、缓存技术:通过redis等内存缓存技术解决数据库瓶颈,缩短了数据的访问效率。
5、弹性扩展:系统具备弹性横向扩展能力,如果处理能力跟不上,通过拓展机器实现支撑能力,和公有云弹性伸缩功能完美契合。
通过以上设计思路,得出我们组网架构如下:
组网架构的数据流为:
1、用户请求发出,进入移动云机房内部;
2、华为E8000E电信级防火墙或高性能WEB防护、流量清洗等安全设备过滤;
3、到达EDGE(NSX-V)的软件负载均衡设备,最大可达百万级并发,按Round-Robin轮循算法;
3、转发至32台WEB+Nginx服务器,WEB服务器向用户手机设备返回请求参数;
4、再次转发至NSX-V的软件负载均衡设备转发至32台Tomcat中间件接口服务器;
5、通过Redis缓存服务器与后台数据库进行交互操作。
整个系统的逻辑架构如下图所示:
整个项目在系统层面通过三层组成:
1、前端:H5方式;
优点:页面加载迅速,客户体验好;
缺点:由于应用采用前后端分离方式,存在跨域问题,需通过在前端部署Nginx的方式以解决;
2、中间件:Tomcat接口服务器 + Redis缓存服务器;
3、后端:MS_SQL数据库服务器。
随后我们在系统上线前,做了富有成效的保障准备工作:
1、云资源实时监控保障
通过VC平台,实时监控用户所有云主机的接口 吞吐量、并发连接数IP地址、主机CPU信息、客户机内存使用率信息,为每日物质储备、性能增删提供了数据支撑。
通过Zabbix实时查看防火墙策略,实时新增会话数、总体会话数、半连接错误会话数; 从物理墙层面得到最直观的数据值;根据判断流量是否异常,并通过half connected TCP半连接数预判。
2、前端架构部署迭代优化
前期申请102台虚拟机,其中32台用apache部署静态页面h5,域名为book.zjfy.zjzwy.com,因与tomcat部署的api服务器域名api.zjfy.zjzwy.com不一致,导致跨域问题的出现(客户登录页面会报错)。经过讨论,小组成员决定用nginx作为反向代理,临时部署32台nginx服务器代替Apache的h5静态页面,同时转发Tomcat部署的API系统,经测试跨域问题得到很好解决。
3、后端架构部署迭代优化
深入分析发现,由于口罩第二天核销与当天抢购都在一个时间段,且同用一个管理后台,会导致数据库压力过大。经过商议再部署一套后台管理系统,单独供给药店口罩分发和数据核销,有效减轻口罩预约时数据库后端压力。
4、其他参数调优
为更好将应用性能与云资源能力适配,小组成员还积极探索,对接口服务器tomcat、数据库等配置参数进行调优。
下图为调整tomcat最大线程数和最大排队线程数值。
下图为优化tomcat使用内存,防止内存溢出。
下图为优化配置数据库并行开销值和最大并行值。
03.上线效果检验阶段
在时间紧、任务重、技术保障要求极高的情况下,广东移动迅速成立省市联合攻坚小组(省云客中心、湛江移动集团客户部、湛江移动客户响应中心),通宵达旦,对各个技术细节进行一次次迭代优化,终于完成湛江市口罩预约系统上线和每天10万个口罩预约指标。
基于广东移动云自身丰富资源和优质技术能力,针对大流量并发的口罩预约系统,平稳支撑了高并发、大流量、抗高IOPS的能力,得到广东湛江群众的良好反响,并被广东珠江卫视重点报道。
除此之外,湛江市口罩预约系统还凭借其优秀的创新性和良好的社会效应,获得行业的肯定,成功纳入中国信息通信研究院联合云计算开源产业联盟各单位制定《助力抗击疫情保障复工复产,云服务产品应用参考指南》的疫情管理防控云产品目录。
04.总结
疫情阻击刻不容缓,广东移动为各类疫情项目提供资源与技术服务支持,充分体现了广东移动的社会担当。本次口罩预约系统的上线为湛江市居民购买口罩带来了便捷,同时也是广东移动云首次承接百万级高并发业务案例,为广东移动云产品性能检测、技术团队历练、省市协同开辟了新的领域。