早年,腾讯主要创办人之一、前 CTO 张志东给腾讯写下第一份商业计划书时,为 QQ 定的第一个“五年计划”是在线人数突破 1 万。
实际上,两年内这个数字就达到了 100 万。
QQ 风靡了网络社交的初创时代,缔造无数奇迹,成为腾讯最庞大、最悠久、最复杂的业务之一,以至于我们很大程度上强化了“腾讯就是 QQ,QQ 就是腾讯”的概念。
到后来,QQ 除了业务上取得成功,也留下了大量支持后台的计算设备——其中就包括 20 万台冰冷的服务器,分布在华南、华北、华东三大区域。这些年,QQ 后台服务依赖关系极为复杂。
不过,腾讯云团队近日宣布:社交业务包括 QQ 和空间的体量有近 20 万台服务器已经全量上云,分布在 3 地的用户全都迁到了云上,实现完整的 QQ 公有云上服务。
是的,“开着火车换引擎”,腾讯做到了。
业内人士评价,这次自研上云的成功,一方面为腾讯云的进一步壮大打下坚实的基础,另一方面,也为 QQ 自身的技术重生埋下伏笔。
基于此,雷锋网与 4 位腾讯老兵,对 QQ 上云的规划、挑战、流程进行了对话,以寻找到背后的逻辑。
“自研上云”是最新技术战略
2018 年9·30 变革后,腾讯进行了“扎根消费互联网、拥抱产业互联网”战略升级和提出了“科技向善”的新愿景,新成立的技术委员会,明确了“开源协同、自研上云”的公司技术战略。
开源协同是代码开放、资源协同,自研上云就是技术协同的一种最终落地的形式,在公有云上协同应用。
口号喊出来,就像是剑已出鞘。
自研上云项目天然作为一种全公司的重大举措要被支持,这个时候意味着全公司的资源(BG 的资源)要全面拥抱腾讯云。
腾讯公司运营管理部运营规划负责人陈铁钢表示,不光腾讯云要增加一部分人力来支持自研业务,同时自研业务的人,也要主动把自己的人力放上去支持把腾讯云的业务做好,是一个合力。
在这个技术战略背景下,QQ 加快速度往云上“迁徙”。
陈铁钢在 2007 年加入腾讯,一直负责公司资源运营布局规划、运营成本优化和架构评审工作,参与并见证了腾讯服务器从 2 万台到 100 万台的规划落地。
在腾讯服务器过百万台的历史时刻,他参与了腾讯技术战略升级的重大变革,即推动自研业务上云。
QQ 业务上云的挑战与应对
如果把 QQ 当做行进中的列车,那么云就是一个新的引擎。QQ 本身在业务层面不可能换挡降速,所以作为引擎的基础设施必须变!
陈铁钢提到,在过去,腾讯云跟 QQ 等这种自研业务是完全割裂的两个资源体系,自研业务用着一千台自研的服务器或者十万台自研的服务器,云上业务支持 20 万台的服务器,两边是割裂的。
QQ 体量庞大,各系统间耦合非常强,这是一个非常大的难度。
作为腾讯云运维中心总负责人,徐勇州说到一个细节:2015 年,腾讯云在上海建立了一个测试业务上云的沙箱,整个基础设施都是腾讯本身的计算存储及数据库等能力。
QQ 当时已经尝试把业务放进来测试,但当时沙箱没有解决整个网络互通的问题,导致方案一直没拿出来。
2018 年底-2019 年初,集团的“自研上云”战略明确之后,腾讯加大了在网络互联互通上的投入。与此同时,腾讯云的精力也由服务外部大客户到加大对内部自研业务的支持。
值得注意的是,QQ 上云工作不是一蹴而就,早几年就已经在做,比如前文提到的沙箱测试,QQ 之所以成为自研上云的先行军,与其准备度高分不开。
徐勇州在 2005 年 10 月份加入腾讯,是 QQ 后台的第一位专职业务运维,一直负责 QQ 的运维能力建设,经历了 QQ 从 1000 万到 2 亿最高同时在线的技术架构演进。
他表示,技术变革背景下,这个阶段上云会体现出更大的一个价值,和过去砂箱的区别不是仅仅产品的有和无,还有就是服务和能力支持的一个问题。
QQ 即时通讯的特点,决定了用户对 QQ 的实时性要求很高,怎样合理灰度,做到用户对上云过程零感知,是一座需要跨越的大山。
“QQ 这种业务是属于海量的用户互相访问的过程,既不可预测,也没法做一个良好规划。QQ 的访问中,有大量临时的 UDP(用户数据报协议)的访问会建立起来,会带来各方面对基础的虚拟化和网络、计算性能的挑战。”
说这话的是肖世广,他是腾讯云原生架构总经理,前 QQ 技术运营总监。2008 年进入腾讯,曾先后负责 QQ、Qzone、腾讯视频、QQ 音乐、腾讯广告、QQ 农牧场等互联网产品的技术运营管理工作。
他看到了无数的后端技术压力,仅仅一个 QQ 群,就是原有技术需求几百倍的放大。
作为腾讯云服务器第一负责人,李力亲历了云服务器从 0 到 1 的过程。他表示,早期给 QQ 做优化的时候,腾讯云更倾向于优化数据的性能,因为 QQ 中大量临时 UDP 出现,会变成 QQ 上云之后一个比较小的性能瓶颈。
但是这个非常小的性能瓶颈可能就会带来成本急剧的增加——因为 QQ 的业务实在太大了。
因此,面对 QQ 这种场景,腾讯云先尝试做资源补充,研发团队、虚拟化团队花了很长时间在具体的细节方面做了很多工作,在软件定义网络的项目把这个问题解决掉,以一个非常合理的资源和成本满足 QQ 的业务要求。
据雷锋网(公众号:雷锋网)了解,QQ 后台服务搬迁到云上部署,还面临着安全问题(云上更容易被恶意入侵)、依赖问题(QQ 后台服务依赖关系复杂)、容灾问题(云环境多地容灾)、灰度问题(用户零感知)。
仅仅从容灾方面来看,QQ 上云需提前评估自研机房到云机房所需的带宽。
假如使用城市方案,专线带宽应该跟现有的三地部署方案对齐。QQ 核心系统大概需要几十G的带宽。若采用 IDC 方案,QQ 里面有很多业务使用有状态的寻址方式,把同城内的机房全部打散访问。
因此,把广州云当做深圳的 IDC 后,广州云和深圳的专线穿越会增大。参考深圳内部的 IDC 穿越带宽,预计需要增加几十G的带宽。
为此,开发者们评估了自研到云机房的带宽:支持 QQ 几大核心系统(接入、消息、状态、资料、关系链、登录)所需要的带宽为N。而所有 QQ 基础功能都迁移到云上,则至少需要 2N 的带宽。
考虑到容灾问题,实际上拉了两条专线互备(防止专线被挖断形成孤岛),即为 QQ 上云专门搭建 4N 的带宽专线。
这个项目为腾讯云和 QQ 都埋下了新伏笔
“集团给我们明确了,不是为了上云而上云,其中有一条:QQ 上云不能有额外的成本支出。”
陈铁刚表示,腾讯内部对成本有着极致的要求。
有 20 年历史的 QQ,成为腾讯内部运营时间最长的业务。
一方面这几年腾讯云给 QQ 提供云上资源支持,另一方面 QQ 原本很多服务器到了服务年限,大部分都被自然裁撤了,少量的可以置换到其他云下的业务使用。
如果为了上云而把所有的服务器一下子从自研搬到云上,这会是一个非常巨大的成本。
现在,在 3 年上云的节奏下,腾讯云终于完成这项壮举,也终于可以回答“自己家业务上云了没有”这个问题。
当然,这件事对 QQ 本身的技术价值也非常之大,比如全面拥抱 DevOps,研发效率更高效;全面拥抱 DevOps,研发效率更高效;彻底拥抱云原生,用云来满足业务快速迭代,资源弹性伸缩的需求;主动与开源社区协同,贡献更多的功能特性。
在腾讯云走过全网服务器总数量突破 100 万台、带宽峰值突破 100T、前 3 季度营收突破 100 亿的重要节点上,QQ 全量上云,必将又是一个新的起点!