1.1.1 互联网服务的容量保障
提及容量保障,人们很容易联想到质量保障,两者同为互联网服务的技术保障手段,既有联系又有区别。
● 质量保障:指的是保障系统服务功能正常,系统按照开发人员设计的功能运行。例如,用户可以通过订单系统正常下单并结算,系统显示的订单信息和金额正确。
● 容量保障:指的是保障系统服务在大量用户访问时依然可以正常工作。例如,在“双11”期间,在大量用户访问的情况下,用户仍可以流畅地在网店上浏览和购买商品。
容量是我们生活中很常见的概念,我们喝水的杯子有容量,我们每天上班乘坐的地铁也有容量。广义的容量可以定义为:容器能够容纳物质的量。杯子是容器,水是物质,杯子能够容纳多少水就是容量。
从互联网技术视角出发,我们可以将软件系统或服务视为容器,将访问量或业务量视为物质,得到互联网软件系统容量的概念,即“单位时间内软件系统能够承载的最大业务量”,如图1.1所示。而容量保障,就是用各种方法保障软件系统的容量充足,尽力排除容量隐患。
图1.1 互联网软件系统容量的概念示意
容量保障对于软件系统的稳定运行至关重要,如果一辆货车核载80kg,而我们给货车装载了100kg的货物,后果可想而知。互联网企业也曾发生过不少因容量问题引发的系统运行事故,例如,某年春晚某“头部”电商的“摇一摇”红包活动短暂宕机,某微博出现热门事件时的频繁宕机,这些系统的宕机事故都对用户造成了巨大影响。
在笔者的职业生涯中,我能够非常深刻地感受到,容量保障对于一家互联网公司的重要性和必要性,因为我时刻都在面对以下这些问题。
● 我负责的软件系统目前运行得很好,但是公司业务增长迅猛,如果用户的访问量增加两倍,系统还能支撑吗?
● 如果系统无法支撑两倍的访问量,系统中哪些服务会首先成为瓶颈?
● 如果对这些系统服务采取扩容措施,需要扩容多少?
● 在大规模促销活动场景下,如何识别和预防系统的容量风险?
与此同时,随着互联网应用复杂度和系统架构复杂度的不断提升,容量保障的难度逐渐增大,解决上述问题的成本也越来越高。我们迫切希望能有一项技术帮助我们解决根本问题。幸运的是,经过技术人员的不懈努力,全链路压测技术诞生了。