10.5 个人开发的一款产品 ,在正式上线两个月后,其日活用户就超过 1000 万。不到一年,它的注册用户就突破 1 亿。并且,其国际版在全球超 100 个国家和地区上线。过去一年,它支撑了 3 亿场会议。这是腾讯会议正式发布一年来取得的成绩。
而一年前,腾讯会议才刚刚亮相,显得平淡无奇。
2019 年 12 月 25 日,腾讯云发布一款云视频会议产品,即腾讯会议,它致力于提升跨企业、跨区域沟通和协作效率,帮助企业节省人力、时间等成本。用户可以直接通过手机、电脑、小程序等入口打开即用,一键入会。
产品发布后不久,疫情的到来促使企业和个人对远程会议的需求增长,腾讯会议步入高速发展阶段,驶入一条快车道。扛过疫情后,腾讯会议又不断推出新功能,持续进行架构优化,提升服务质量。
回顾过去这一年,腾讯云副总裁、腾讯会议负责人吴祖榕把腾讯会议最大的特点概括为“生于云、长于云”。某种意义上,“生于云、长于云”不仅让腾讯会议有了一个坚实的技术底座,而且经受住疫情的考验,甚至为其整个发展奠定了基础。
一个 DAU 5 万的小目标
腾讯会议最早可追溯至 2018 年 7 月,此时,这个项目正式启动,前途未知。
“那时,我们要把最小的功能单元做出来,最大的压力是团队规模小,整个腾讯会议的开发团队只有 7.5 个人。”吴祖榕在接受采访时说。
2019 年 5 月,腾讯会议发布了 0.94 内测版本,总共使用了 10.5 个人,其中前端 8 个人、后端 1.5 个人、产品 1 个人。当时,腾讯云投入 1.5 个后台开发人员,花了两个月时间搭建起整个腾讯会议的后台体系,核心技术则来自腾讯云原生的一系列技术组件。据悉,在基础设施层,腾讯会议使用了腾讯云的云服务器(CVM)和容器服务(TKE);在存储层,用了腾讯云的数据持久化(TDSQL);在逻辑层,使用了状态数据缓存(REDIS)、日志服务(CLS);在接入层,用上了腾讯云的接入域名(DNSPOD)和负载均衡(CLB in TKE)。
吴祖榕表示,这极大降低了后端的开销,让后台开发人员只需关注业务逻辑,保障整个业务的推出。“所有的技术组件都是由(腾讯云)云原生提供的,使得我们开发资源就像搭积木一样。”他说。
并且,正是因为腾讯会议在早期充分使用了一系列的云原生组件,也为其后续扩容提供了极大便利。
2019 年 12 月 25 日,腾讯会议正式对外发布,团队当时定了一个小目标:希望在 2020 年底,腾讯会议的 DAU(日活跃用户)可以达到 5 万。如果在 2020 年底实现 5 万 DAU 的目标,“我们觉得这就是我们今年最好的成绩”。
上线两个月,DAU 破 1000 万
世事难料,在腾讯会议发布近 1 个月后,武汉封城,疫情形势日益严峻。在武汉封城第二天,腾讯会议发布公告,面向用户免费开放 100 人不限时会议功能。此后,继续扩容,免费开放增加至 300 人。与此同时,大量用户开始陆续涌入平台,而腾讯会议在短时间内迎来海量用户的快速增长。
2 月初,腾讯会议迎来巨大考验。它的系统最初是为 5 万 DAU 目标设计的,但是,在不到两个月的时间,腾讯会议的 DAU 突然翻了几百倍。
腾讯会议后端技术总监王彬在接受 InfoQ 记者采访时说:“前期,我们系统投入的人力并不多,包括从产品到研发。此时,突然有上百倍的增长,这对我们的系统有很大的压力。”随着用户量的不断飙升,系统能否撑住变得至关重要。“2 月份,团队停掉所有新的开发任务,唯一的要求是稳定“。
吴祖榕称,稳定是最重要的。
2 月 3 日,即春节后开工第一天,随着海量用户的涌入,各大办公软件陆续“崩了”,腾讯会议也没扛住。稳定是第一要务已经不言而喻。如何保证稳定,关键是扩容。2 月 10 日正式复工,这意味着腾讯会议只有 8 天的扩容时间。“复工复学第一天,我们就开始了夜以继日的扩容”。
以前,腾讯谈海量服务是“先扛住,再优化,周期往往是一个月或两个月。吴祖榕表示,”到了疫情期间,这个周期缩短到 24 小时:白天,我们做大量的扩容,保障带宽资源、服务器资源等;夜里,我们针对产品性能等问题做大量的开发、部署;凌晨,我们再对当天的所有变更、代码优化做压力测试”。
白天扩容,晚上优化,这 8 天是所有人压力最大的时候。
8 天后,扩容 10 万台云主机,累计有超百万核的计算资源投入。
不过,对王彬他们而言,事情远未结束。“我们的设备跟进了,但我的管理能力是跟不上的”。他打了一个比方,一个饭店以前一天接待 100 人,突然有一天,要接待 10000 人。
设备虽然得到扩容,但并不是事情就完成了,业务层面还有大量的细节需要优化和解决。扩容前,业务层只是一个几十台设备的集群系统,系统的管理和调度系统都比较简单。扩容后,突然变成一个多地域,设备数达 10 万级的集群,原有的调度和管理系统完全无法支撑这么大的规模,需要快速优化和局部重构。
因此,这就需要他们做很多事,比如入口路径规划等等。具体说来,集群化管理上,完成 4 个普通 Set 和 2 个 BGP Set 的建设,这样可根据业务发展情况,灵活调度和扩容。在接入和加速优化层面,利用腾讯云在全球的 IDC 机房、数据节点和加速节点,腾讯会议完成了全球部署和接入,确保全球用户的使用体验。
除调度系统的优化外,还要梳理所有模块的调用关系,明确系统的核心路径,尽量简化核心路径,减少和取消核心路径的外部依赖。
对于存储层,王彬介绍,由于访问量突增,同时需要确保低延迟的接口响应,将核心模块的存储从 MySQL 迁移到腾讯云 redis,确保在高并发下系统的稳定性。为了发现系统瓶颈,他们也建立了一套分布式的压测系统,每天凌晨进行压力测试,从压测中发现系统的瓶颈点,再快速的优化和改进。通过每日压测,系统的同时在线服务能力逐渐从 100 多万上升到 500 万、800 万在线。
在人力方面,他们同样“压力山大”,因为整个人力非常短缺。据王彬介绍,在腾讯会议 1.0 版本发布时,它的后台开发只有几个人。在疫情期间,虽然扩容了 10 万台云主机,但是系统要调整,架构要优化,这也意味着需要有更多的开发人员。
人手不够怎么办?他们一方面紧急招募新人和一些志愿者;另一方面,向腾讯云求助,腾讯云兄弟部门则派了四五个团队过来协助。
事实证明,腾讯会议的成功扩容和后续优化,不仅让它扛住了复工后汹涌而来的巨大流量,而且经受住疫情的巨大考验。
吴祖榕说:“你要能在 8 天扩容 100 万核,你不长在云上,做不了这件事情。如果是传统的做法,完全没办法在这么短时间里调集这么多服务器资源、带宽资源、技术资源等。这就是‘生于云、长于云’背后最核心的东西。”
245 天,注册用户破 1 亿
在疫情得到控制后,腾讯会议的第一要务从稳定变成了功能和服务质量。与此同时,它也从爆发期迈入稳定期。
这时,腾讯会议在技术上主要是持续打造自己的核心能力。首先,在音视频的核心体验上,“多方通信是一个带约束条件的技术问题”,端到端通信需要在 400 毫秒内完成。如果时间小于 200 毫秒,效果会更好。
吴祖榕表示,“这个过程中,每增加一个新技术,就会带来延迟,因为要运算、要处理,处理完之后再交给下一个环节。这一块越长,链条越复杂”。
虽然约束条件是 400 毫秒,但是团队在内部定的目标是在 200 毫秒内完成端到端通信。在这个过程中,他们做了许多事情。比如,语音方面,团队专门采集很多噪声,甚至还花费很多力气去采集雨点打到玻璃窗上的声音。
“有一天,我们正在开会,而外边下起了大雨。因此,会议另一边的人听着非常嘈杂,他们问发生了什么事情。这时,我们意识到雨点噪声(对会议的影响)”。
除了雨点声,团队还采集了公交车开门的声音、餐桌上吃盒饭的声音、关门声、水杯放在桌子上的声音、咳嗽声、微信消息提示声和敲键盘的声音等等。据了解,他们累计采集了上几百种的声音。团队把采集下来的声音作为噪声,将经典信号处理与深度学习结合,通过 AI 训练来实现降噪,目的是在开会期间安静地把声音传输给对方,提升整体的沟通效率。
另一个深入音视频核心场景的技术实践与椅子有关。当时,腾讯会议新出了一个功能,叫虚拟背景。因为疫情期间,人们在家开会时会打开摄像头,但背后的画面有时并不适合出现在摄像头里,因此就有了这个功能。
但是,这个虚拟背景最大的问题是椅子的头枕,它会在后面凸出来,给人的体验很不好。为解决这个问题,团队采集了近 6 万张带有头枕椅子的数据,给它们做标注,从而实现更好的虚拟背景效果。
“整个阶段,我们围绕‘听得清、看得清、听得真、看得真’做了大量的努力。”吴祖榕说。除了音视频层面,持续打造核心能力的第二点是后端技术。据腾讯会议后端技术总监王彬介绍,第一,他们做了系统服务化拆分,把“会管会控”拆分成主控、媒体网关、安全、权限、数据网关、消息、应用。“拆了以后,需求不用每次改个‘大胖子’,消息的改消息,安全的改安全,这对整个服务的质量提升是有帮助的”。
并且,这样做还可以降低维护成本和提升系统的运营质量,拆分出核心模块和非核心模块,则大大提升了核心模块的稳定性和容灾能力。
第二,在接入方面,他们建立分级的数据中心,完善后台管理体系和调度系统,调度用户就近接入和数据流闭环。以前,他们接入的机房均位于北京、上海、深圳等地,但这些机房的成本很高。那怎么办?于是,他们将全国数据中心划分为三级:第一级为 DC,在北京、上海等地;第二级是 EC,位于成都、重庆、武汉等地;第三级是 OC,比如兰州等地。“像成都等这些地方不比一线城市,它的成本会低一点。我成都的会就在成都开,接入成都的 IDC 机房”。
第三,在部署和运营上,他们从预发布、灰度 Set 到普通 Set 再到 VIP Set 形成一套完整的流程和体系。新版本正式上线前会有预发布,通过自动化拨测检测系统的质量和可用性。然后,进入灰度 Set 阶段,基于后台管理体系评估灰度版本的质量,减少系统发布异常的影响范围。经过灰度 Set 验证的版本,在普通 Set 开始部署和放量。最后是 VIP Set,在普通 Set 验证系统和功能的稳定性后,逐步部署到 VIP Set 中。
此外,他们还进行了流量优化、提升通信质量,等等。
现在,王彬他们正在做私有化系统建设。基于腾讯云 TCS 平台,由 TCS 提供云基础设施、中间件、数据库等产品服务整合,涵盖应用自动化测试、部署、升级、运维等,打造将业务快速私有化和交付的能力。同时,在功能上,支持超大型在线会议和更多的数据类型等。“现在,我们的企业版支持 2000 人开会,后面会支持更多的人,比如支持 10000 人、20000 人开会。”他说。
在腾讯会议正式发布 245 天后,其注册用户正式突破 1 亿。
写在最后:
虽然腾讯会议已经一岁,但是它未来的路还有很长。正如吴祖榕在采访中所说:“至少在明年一年的时间里,我们在会议上要补充的东西依然有很多,我们的路还很长很长。过去一年,你会发现腾讯会议的界面几乎没有变过,但是我们在每个版本上都迭代了非常多的细节,优化了产品。”
评论 4 条评论