写点什么

腾讯会议和钉钉:我们太难了

  • 2020-03-05
  • 本文字数:4185 字

    阅读完需:约 14 分钟

腾讯会议和钉钉:我们太难了

这两天各高校在线开学,流量再次增加,腾讯和钉钉还能撑得住吗?


这个明显不同的春节,让中国互联网人迎来了一场技术大考验。一些在线产品在这期间保持了持续不断的十倍、几十倍的业务容量增长。很显然,如此超高的并发流量并不在很多公司的预期内,到底能涨到多少,阿里和腾讯都表示没有底儿。大家只能不断地堆资源:钉钉 8 天扩容 10 万台服务器,腾讯在线会议紧急扩容 100 万核。


整个系统需要的资源是超乎想象的。


钉钉没有预期到会出现这么大的流量,也没有想到接下来在 Appstore 连续 20 多天排名第一。


同样的事情也发生在腾讯。经过持续一周每天 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 万核的星星海服务器就是近两年自研的成果。



随着员工去办公地点正常复工,这次战役已告一段落。


徐勇州说:“得益于腾讯在云计算里的投入,今天在面对这个不能预料的突发需求时,我们才能够跟得上。但如果再大十倍,可能就真顶不住了,这种情况会要求我们进一步加大投入、提升云服务的能力,所以这次战役也确实加速了整个云计算的技术发展。”


2020-03-05 11:109261

评论 4 条评论

发布
用户头像
就知足吧,就怕没人用啊
2020-03-17 17:33
回复
用户头像
我自己的感觉,好像并不用太同情这样的文章。
2020-03-15 16:41
回复
用户头像
就是两家企业的军备竞赛而已,疫情之后用户重归线下,服务器又要减容。潮水退去,留不下一片贝壳。
2020-03-14 19:38
回复
云服务器打折销售
2020-04-15 10:32
回复
没有更多了
发现更多内容

redis优化系列(一)基于docker搭建Redis主从

乌龟哥哥

4月月更

RocketMQ msgId与offsetMsgId释疑(实战篇),腾讯技术官发布的“神仙文档”火爆网络

爱好编程进阶

Java 面试 后端开发

如何进行项目协同管理

阿里云云效

阿里云 项目管理 敏捷开发 项目协同 研发协作

博睿数据携手F5共同构建金融科技从代码到用户的全数据链DNA

博睿数据

数学史有没有必要读?关于数学教育,我们忽视了太多

图灵教育

数学 数学史 数学教育

Java基础12 面向对象~多态,java中级开发面试知识点

爱好编程进阶

Java 面试 后端开发

企业选择私有化部署的IM即时通讯软件,全力保护信息安全!

BeeWorks

Java经典算法题(二),这10个经典又容易被人疏忽的JVM面试题

爱好编程进阶

Java 面试 后端开发

MyBatis实现一对一,一对多关联查询,HTTPS面试常问全解析

爱好编程进阶

Java 面试 后端开发

带你了解极具弹性的Spark架构的原理

华为云开发者联盟

spark mapreduce 内存 RDD Spark架构

Spring Boot 实战 :入门篇,想给金三银四找工作的程序员几点建议

爱好编程进阶

Java 面试 后端开发

Kotlin的扩展函数知识点

北洋

kotlin andiod 4月月更

Java并发体系详解,聊一聊MySQL数据库中的那些锁

爱好编程进阶

Java 面试 后端开发

每周问答精选:PolarDB-X完全兼容MySQL吗?

阿里云数据库开源

数据库 阿里云 开源 polarDB PolarDB-X

世界读书日晒出你的书单,有机会领取免费读书年卡!

InfoQ写作社区官方

书籍推荐 热门活动 2022世界读书日

Netty权威指南:Linux网络-I-O-模型简介,分享我在Java开发中走的一些弯路

爱好编程进阶

Java 面试 后端开发

OutOfMomeryError异常实例与处理,zookeeper面试题总结

爱好编程进阶

Java 面试 后端开发

PlatoFarm推出正式版游戏经济模型的特点分析

西柚子

Java 方法的使用(方法重载、形参和实参调用关系,作为Java程序员都应掌握

爱好编程进阶

Java 面试 后端开发

Vue + Node.js 搭建「文件上传」管理后台

蒋川

Vue Node Node Exporter

智能手表的下半场,机遇与挑战并存

FinClip

浅谈IM系统中离线消息、历史消息的最佳实践

BeeWorks

Java文件读写原理和虚拟内存,面试阿里

爱好编程进阶

Java 面试 后端开发

java的反射用不好容易走火入魔?还可以用内省啊!,网易java面试题和答案

爱好编程进阶

Java 面试 后端开发

Spring Boot在微服务中的最佳实践!,作为Java程序员都应掌握

爱好编程进阶

Java 面试 后端开发

Apache Flink 在蔚来汽车的应用

Apache Flink

大数据 flink 编程 流计算 实时计算

运行npm install命令的时候会发生什么?

华为云开发者联盟

node.js npm install npm install

Java有线程安全的set吗?,跳槽薪资翻倍

爱好编程进阶

Java 面试 后端开发

Java程序员如何加入自己理想的大厂呢?本人来分享亲身经历的腾讯Java技术岗的面经。

爱好编程进阶

Java 面试 后端开发

Myabtis源码分析五-Mybatis配置加载完全图解,建造者模式的使用,涵盖Java各种技术栈

爱好编程进阶

Java 面试 后端开发

Redis面试题汇总,mysql索引优化面试题常问

爱好编程进阶

Java 面试 后端开发

腾讯会议和钉钉:我们太难了_服务革新_Tina_InfoQ精选文章