《“十四五”国家信息化规划》中建设数字中国的规划对我国的数字基础设施体系和数字政府建设水平都提出了更高的要求。在发展建设数字基础设施体系的过程中,政府需要采购软件和硬件系统。而《政府采购法》对单一来源采购的严格限制,就要求政府建设的IT系统要由来自于多个供应商提供的子系统组成。
多供应商IT系统
随着社会经济的发展和计算机技术的进步,社会数字化的进程也在逐步推进,更多的数字化场景被引入政府的工作和社会的生活中,随之用户数量也在逐步增加,这也意味着IT系统将承受更多的流量峰值场景。
IT系统要实现更复杂的功能、服务更多的用户、承载更大的流量,就意味着要引入更多的组件,这些组件来自于不同的供应商,涉及整个系统的诸多不同环节。更复杂的系统必然会引入更多的潜在故障,也必然存在更高的稳定性风险,这就对多供应商IT系统的稳定性保障提出了更高的要求。
对于复杂的多供应商分布式IT系统,简单地在测试环境中进行压力测试并不足以检验其潜在的风险。某大型股份制银行的红包秒杀活动系统即便是提前在测试环境做了数轮压测,在面对真正的流量时依然暴露出容量和IDC资源不够的问题。相似地,华南某知名股份制银行虽然积极地对活动系统在测试环境中进行压测,但还是连续三年都发生了不同的问题。
积极防御
分布式系统组成复杂、组件众多、发布频次多,这些特点意味着分布式系统中存在着大量的不稳定因素。如果在这些不稳定因素暴露问题之后再应对,就会陷入疲于救火的被动局面。因此,要保障分布式系统的稳定,就要采取积极防御的战略思想,对实际生产环境产生的流量进行模拟和预演,采用全链路压测和链路监控的技术发现和定位潜在的链路性能问题。
案例:浙大多供应商IT系统
2020年2月底和3月初是疫情管控的关键阶段,教育部要求全国高校实行远程网络授课的教学形式。面对特殊时期突发的流量高峰,许多网课平台在开课首日纷纷出现故障,给全国多地高校的教学工作造成了影响。而浙江大学7万师生进行网络教学所使用的浙大钉钉工作台、学在浙大等平台经受住了陡增的流量压力的考验,保障了浙江大学的教学顺利开展。这要归功于浙江大学信息技术中心引入的生产环境全链路压测和链路监控解决方案。
浙江大学网络授课所使用的IT系统是一个多供应商的系统。多个单位和供应商参与了浙江大学网络授课相关的IT系统的供应和支持工作。对于这样复杂的系统,采用简单的压力测试是不足以发现潜在的问题的。需要采取模拟真实流量情况的生产环境全链路压测方案,就像模拟考试一样检验系统的流量承受能力。
全链路压测与传统的压力测试仅支持单节点压测不同,支持将节点组合成场景进行压测,更真实地反映场景中的问题。全链路压测方案要模拟真实条件下的流量压力,要遵循三大原则,即一样的环境、一样的场景、一样的量级,以对真实的用户行为产生的流量进行模拟。浙大引入的全链路压测平台Takin采用的是基于JavaAgent来实现压测数据识别和转发的技术,它可以对压测产生的数据和正式流量产生的数据进行标识和隔离,将压测产生的数据写入影子缓存和影子数据库中。在JVM层进行数据识别及转发、影子库表隔离的技术方案能保障它既不需要侵入业务系统的内部改造代码,又可以避免压测流量产生的数据对生产造成污染。同时,该压测平台通过白名单管理、挡板等功能可以有效阻止压测流量流向外部第三方系统,进一步防止压测数据的泄漏。
通过实施生产全链路压测方案,浙江大学网络授课平台的多种性能问题被提前发现。根据压测报告,相关的企业和单位对系统中的设计进行了调整,包括对数据库链接的调整、对权限检查代码的优化、对获取身份逻辑的调整、对资讯服务的调整等。
经过一系列的工作,排除了潜在的性能风险,保障了浙江大学网络授课工作的顺利进行。2020年2月24日当天,学在浙大平台当日总访问量突破100万次,在线最高访问量11万余次,未出现性能故障。