这个明显不同的春节,让中国互联网人迎来了一场技术大考验。一些在线产品在这期间保持了持续不断的十倍、几十倍的业务容量增长。很显然,如此超高的并发流量并不在很多公司的预期内,到底能涨到多少,阿里和腾讯都表示没有底儿。大家只能不断地堆资源:钉钉 8 天扩容 10 万台服务器,腾讯在线会议紧急扩容 100 万核。
整个系统需要的资源是超乎想象的。
据说第一周当钉钉的工程师首次把资源需求提给阿里云的时候,阿里云的同事以为钉钉是在吹牛。
同样的事情也发生在腾讯。经过持续一周每天 10 倍的扩容之后,腾讯会议的工程师面对“还需要继续准备十倍的容量”的命令时,他们觉得不可能还会需要那么大,但现实表明这个命令极具先见之明,后面的体量就是持续保持在这个量级上。
最开始的两周时间,每天的扩容都是在跟业务的增长赛跑,腾讯会议的工程师说:“每天十倍的增长,我们的团队扛完最初的一周,感觉就像过了整整一年。”
这样的流量对钉钉和腾讯会议来说都是史无前例的。
阿里巴巴经济体已经经历了 11 次“双 11”。阿里每年都会根据历史数据预估业务量级进行容量规划和全面的压测,给各个业务留有足够的机器冗余,来保证“双 11”活动的稳定运行。但钉钉从来没有经历过自己的“双 11”,因为放到一个月之前,没有人能预见到这些事情的发生。
腾讯云视频业务总经理李郁韬也提到:“春晚红包、电商双十一这些活动的突发流量跟这次相比都是短期突增的窄带宽流量”,“而且腾讯历史上没有任何一个产品有过这么快的增长速度,我们以前也做 QQ,早期也支持过微信的发展,但都没有在一两周这么短的时间里达到今天这个用户规模和带宽规模。”
他感慨说:“这个疫情的爆发,让我们把这件事情‘赶鸭子上了架’,短时间内就把它顶了上去!”
罕见又超预期的爆发流量背后,是短时间的自动扩容,以及十万台服务器和数 T 带宽资源的快速调配。如果是一个没有技术深度和资源积累的小企业,基本上不可能在短时间内解决这些问题,从而提供这么流畅的服务。在这场特殊的战役里,巨头和创业公司的差距进一步被拉开了。
春节之后,有超过 1000 万的组织和 2 亿的上班族在线开工,有 5000 万的学生通过钉钉在线课堂学习。2 月 3 号在线开工,到 2 月 10 号全国中小学在线开学,再到 2 月 17 号全面复工复学,每一次的流量都是前一周的多倍。
钉钉这种超预期的流量,不是 3 倍,不是 10 倍,而是 20 倍、上百倍的增长,部分应用系统甚至达到百倍以上。由于在家办公,是持续的召开电话会议、收发消息、视频直播,因此每天八点半开始的峰值流量并没有在几分钟内结束,而是持续了三四个小时。
为了保障登录、消息收发等核心系统的通畅,钉钉对部分上下游系统实施流控的手段,比如对已读未读的状态更新做了延迟。钉钉对外表示他们的系统架构经受住了考验,但依然需要大量的资源。从 1 月 29 日起,钉钉团队就已经开始全力扩容,截止 2 月 2 日,从最初的 2W vCPU 扩容到 3W vCPU,仅做到了数倍扩容,阿里技术对外表示:“还远未达到业务需求。”
2020 年快手接下了春晚红包活动,腾讯云则是背后最大的一个支撑方。腾讯云技术团队本来以为经历完春晚红包的大流量考验后,大家可以在初一后开始休息并安心地过个年,结果没想到的是,从初二初三开始,因为疫情的关系,腾讯会议这边的流量猛地开始涨了起来。于是初一过后,大家又无休息地再次紧急投入了在线会议的流量战中。
春晚红包,双十一活动,或者是英雄联盟这种大型比赛的流量,跟这次疫情下的流量相比来说,都算是短期突增的窄带宽流量或者是缓慢攀升的比赛型大带宽流量。腾讯告诉我们,在线课堂开始于八点、八点半,企业的在线会议开始于九点、九点半。企业员工需要准时上班,学生更是需要准时上学,大家的网络接入都特别“准点”,这两个场景下,就会产生非常典型、非常明显的短瞬间峰值。而且除了短瞬间尖峰,疫情导致大家把线下的工作和生活的交流全部搬到线上,带来的网络的流量增长非常高、带宽非常大。
最初企业还没有开始复工的时候,腾讯以为可能也只是一个十倍左右的增长,顶多到百倍。谁知道一两天后发现每天都是十倍十倍的增长,到后来体量大了可依旧是“翻倍”,也就是说越到后面流量越高得吓人。
腾讯云运维中心和客户服务部门负责人徐勇州说:“在线会议的扩容,真的就是不可预期的,我们只有更大胆的去堆资源。我们没法精准地知道明天的增长到底是五倍还是十倍,反正能做的就是持续的往上面去堆资源。我们一开始就把春节期间为春晚红包准备的资源池子全部加进了在线会议的扩容上。”
钉钉:资源不是魔法变出来的。
2 月 3 号开始的一周,是钉钉团队度过的最难的一周,因为开始对流量的预估是难以有依据的。但是这周的数据可以作为后面的工作参考,钉钉团队在这一周进行了大量的系统优化,这让钉钉挺过了 10 号开学后带来的更大的挑战。2 月 12 日,钉钉宣布连续扩容 10 万台服务器。在疫情期间道路封闭、园区隔断、人员异地的条件下,阿里云完成了十万台服务器的调拨、打包、运输、调度、上架、发布。
腾讯:带宽扩容需要三个月,但实际我们只花了三天。
腾讯历史上没有任何一个产品有这么快的、在一两周的时间内达到目前这个体量的增长速度。这背后最主要的就是资源侧的保障。而且资源交付的压力和节奏也是特别罕见的,是在腾讯云在过往的服务中,包括腾讯云对外部客户的交付中从来没有遇到过的情况。根据腾讯云内部的总结来看,腾讯云只用了一半的时间去交付以前两倍的资源。
除了服务器资源,腾讯中央数据中心的带宽需求在很短时间内就到了 T 级水位。腾讯云用三天的时间完成数 T 带宽扩容的工作,通常情况下,一般企业进行 T 级带宽扩容,可能需要三到四个月的时间,因为其中还涉及到运营商的审批。徐勇州解释说,腾讯之所以只用三天一方面是使用了内部的储备资源,另一方面是和运营商有长期合作基础。
资源问题解决之后,瓶颈已经变成了扩容的速度了。业务已经在以令人无法想象的速度增长,那么扩容就是在跟时间赛跑。一般来说互联网比较常见的扩容的力度是以月度,最多以周为单位进行的。涉及人力和资源调配周期,以周为单位已经是很快的速度了。而现在这个扩容是以“天”为维度进行的,前一天就需要扩好第二天的容量。
十万台服务器,数 T 带宽,这些资源的成本折算下来就是上亿的资金投入。巨头凭借过去在技术和资源上的积累,加上充裕的人才储备,以及成熟的组织结构支撑,从而能快速的解决问题。较之初创型企业,巨头再次展示出了自己能力上的优势。
社交产品的扩容相对来说是最复杂的。
整个互联网的应用,主要分为三类。一类是内容资讯类,层级构成相对简单,主要是一个网站,以及背后的静态、动态数据库。第二类是一些电商娱乐类,强调的是数据的一致性,但并发量相对来说不会太大。第三类,是社交类的产品,相对比较复杂。
社交类产品的复杂主要体现在:一是规模大。两个人之间的通信是一对一的,但多人就是 N×N 的请求量,是几何倍数的增长。二是系统内部的层级多,每个对话还都涉及到接入点、消息中转、状态存储、关系链数据等等,实时性要求也高。而且现在 IM 还需要满足音视频沟通的需求,文字沟通的需求,甚至还包含有电商入口,以及小程序和支付场景。在一个世界 N 个场景的社交体系里面,IM 链接了人和人,以及人和各种各样应用,这些注定了系统本身的复杂度。
因为在腾讯内部业务场景众多,有横向对比,李郁韬总结说:“如果用数字来对比这种复杂度的话,假设内容资讯类的复杂度是一,电商娱乐类是十,那么社交类可能就是一百。”
自动化扩容依靠于系统里的监控产品对负载和关键技术指标进行监控,取决于监控是否能及时检测到瓶颈点。当监控到这个复杂系统里的某指标异常时,再选择合适的逻辑自动增加容量。系统越复杂,需要监控的就越多,扩容的策略也更复杂。
这次流量爆发下,钉钉和腾讯都做到了快速自动化扩容,且都创下了“快速扩容新记录”。这相当于有了十万台机器,如何才能做到用最快的速度用到系统里去?腾讯认为这主要依赖于三个方面:
第一个是标准化实施的程度要做得好。不管是用容器管理,还是用进程、RPM 包,业务模块自身都需要有好的标准化机制。举例来说,如果分别要在 Windows 服务器和在 Linux 服务器上进行扩容,而两个程序的版本又不一样,同时还需要有各种各样的 Check 检查,这个工作就会变得非常复杂。要把复杂的事情变得简单,标准化架构建设就特别重要。
第二个是自动化的能力。在标准化的基础下,怎么能够安全高效地把资源部署到所有的节点上面去。服务的便捷程度,这其实是需要长期去积累的一个能力。
第三个是验证机制。资源快速部署之后,是否能保证服务质量,需要体系里有自我检查的能力,依赖于有完善的压测、验证、监控等等产品。
“服务器这种资源,在这段时间里,有就是有,没有就是没有,花钱也买不到,急也没用。”
假期的一次次延长,导致中国企业市场哀鸿一片。可在惨淡的市场之下,线上办公却成为风口,在线教育, 社交娱乐类如游戏、K 歌、直播,以及政务医疗也都迎来了发展机遇。线上流量猛增,很多企业不得不在全国各地紧急租用机房、购置或租用服务器进行扩容。服务器、带宽这些刚需资源,如同是这场战役中黄金硬通货,价格上涨,但一机难求。对小企业来说,在工业线、整个物流全部停工的状况下,就算是有钱也难买到,更别说今天买了明天就能用到系统扩容上去。
“回过头来看,如果今天没有云的这个能力的话,可能今年这关我们就很难过去了。”
腾讯等头部企业都依赖于他们的云计算自身的储备。
中国云计算一直处于早期发展状态,直到最近两年大环境开始持续加大对基础设施的投入。十多年前,像 BAT,还有更早的网易、新浪、搜狐时代,大家都是采用自建 IDC 机房的方式。近两年互联网的独角兽企业,开始在云上构建自身应用了,这是一个很重要的标志性现象,也起到了很好的牵引作用。另外就是政府和大型国企,开始了数字化转型,他们都感受到了创新应用的推动力,对上云有了很大的态度上的转变。这些又不断促进中国云计算厂商不计成本的投入。腾讯这次投入的 100 万核的星星海服务器就是近两年自研的成果。
随着员工去办公地点正常复工,这次战役已告一段落。
徐勇州说:“得益于腾讯在云计算里的投入,今天在面对这个不能预料的突发需求时,我们才能够跟得上。但如果再大十倍,可能就真顶不住了,这种情况会要求我们进一步加大投入、提升云服务的能力,所以这次战役也确实加速了整个云计算的技术发展。”
InfoQ Pro 是 InfoQ 专为技术早期开拓者和乐于钻研的技术探险者打造的专业媒体服务平台。
这里是 InfoQ 中文站的移动端入口,这里有深度专业的技术内容,独家报道的技术实践,还有专属 InfoQ Pro 会员的福利优惠。
扫描下方二维码关注 InfoQ Pro,小 Q 将免费送出 InfoQ独家节目《大咖说》全套视频资源,围观成功人士对技术的理解,干货满满,快快来拿!
点个在看少个 bug👇