网络安全检测|网络安全服务|网络安全扫描-香港墨客投资移动版

主页 > 业界资讯 > ddos防御

QQ技术团队专访:QQ NT全新重构背后的思考

在瞬息万变的互联网行业中,年过二十四的 QQ堪称超长寿的产品,见证了中国互联网崛起的完整历程。然而,如今这个元老级产品经历了一次从内到外彻底的重构。

在这次重构中,QQ选择了 Electron作为 UI跨平台开发框架。尽管 Electron被 Slack、Visual Studio Code和 Discord等大型产品广泛使用,但也引发了一些网友的担忧,例如内存占用、安装包体积和启动速度等方面的问题。

好奇于 QQ的决策,于是infoQ采访了 QQ技术团队,窥探这次变革的脉络,揭示出那些潜藏在背后的思考。

QQ重构背后的思考:24岁的 QQ有什么样的技术债?

QQ的第一个版本发布于 1998年,在 Windows技术栈的基础上用纯原生的方式开发,在当时互联网带宽非常小的情况下,QQ将安装包控制在了只有 200K左右。2007年后智能手机开始露出苗头,腾讯行动得比较早,部分前端技术开发开始转型到了移动端,在桌面端, QQ随着业务和组织的发展,针对三大操作系统陆续组建了三支不同的研发团队,各自负责自己的一套代码。

三端不同代码,老产品历史包袱,加上移动时代研发人员的转型,导致桌面 QQ维护成本很高。QQ技术团队介绍,拿之前的桌面 QQ为例,WindowsQQ以前的 UI框架用的是腾讯自研的 GF框架,10多年了,GF这个框架文档还不全,新加入这个项目的团队人员,要基于这个基础框架去做一些事情,是效率很低的一件事情,慢慢的就没有人愿意去用这个框架了。简而言之,就是技术债。

旧版的桌面端 QQ,Windows的功能最丰富,macOS次之, Linux功能非常简洁。比如“屏幕共享”这个功能,移动端有,Windows端有,但是 macOS端是没有的。那用户就会遇到一个问题,像 macOS端无法与其它端 QQ用户一起来使用这个功能。

“多端不统一不利于用户对于 QQ的统一认知。我们这次的架构升级就是想尽量通过一套核心代码去拉平所有平台的体验,让它具有更好的可维护性和可扩展性,让桌面 QQ能够更好地迭代产品交互和功能,升级用户体验,再次焕发生长的生命力。”

于是 QQ NT项目是在 2022年 3月份正式启动, macOS QQ在 6月份开始发布内测, 9月份正式上架了 App Store,迭代了几个版本之后,QQ团队就同步开发 Linux。在 2022年,QQ发布了新的 macOS和 Linux版本,包括 QQ后台其实也做了很大的改变和重构,核心系统做了全新重写,云原生成熟度也得到了很大的提升。从 2023年开始,QQ团队聚焦做 Windows端的开发,在 3月底就开始内测,7月初上架官网。同时移动端 QQ NT也在 7月初完成了核心系统的重写和全量升级。在目前全新的框架设计下,无论是核心系统、功能迭代还是设计语言上,都可以尽可能地“原子化”,来让 QQ后续更好地迭代功能。

重构之路:最大的压力与挑战源自何处?

“QQ的重构其实是两方面的重构:一个是面向复杂业务的梳理重构,一个面向工程技术债的全新技术重构,重构之路也是两者相互伴随的过程。”

首先,在整个 QQ重构过程中最大的挑战来自于 QQ功能的复杂化,QQ有很多十分复杂的历史功能,这些功能模块也曾经由非常多不同的人经手负责过。其中哪些功能是不合理的或没有价值的,如何去做取舍往往是最难的。“虽然技术上我们做了很多事情,但技术上的实现或许并没有那么难,我们处理起来更有经验和从容。相比于技术的复杂度,业务上的往往需要考虑的更多,这本身就是很大的挑战。”

因为 QQ已经是近 25年的产品了,有很多细小复杂的功能。虽然这些功能看看起来很小,但用户量其实又很大,稍微改动可能就会有很多的用户反馈,QQ团队都得非常的关注。仅从产品功能角度上看,有些功能本身就已经是很重的负债,而 QQ团队内部有一个叫做“QQ节能计划”的项目,会有比较严谨的项目流程去评估是否需要下架。

技术上重构也有不少挑战,这次重构是一次跨平台的重构,而在多个平台里面比较有挑战则是 Linux平台。

作为程序员,很多人免不了要跟 Linux打交道。但是这么多年来,对于使用 Linux系统的用户来讲,有一个特别让人烦恼的问题,那就是没有一个好用的 IM聊天工具。被寄予厚望的 QQ,此前在 Linux版本上功能也没有 Windows和 macOS版本全面,迭代速度也明显慢过其他两个版本。业界甚至猜测 Linux第一个版本是由腾讯实习生所写,毕竟这个说法进一步加重了其初版的“简陋”特性,也为其“停更”的原因提供了更合理的解释。

QQ技术团队表示,较之另两个版本,Linux版本的研发最为复杂:一方面操作系统本身很多碎片化,市面上有非常多的发行版,也不缺乏一些千奇百怪的版本;另一方面因为机器运行环境或编译器的缺失,使得解决适配问题的难度很大。许多发行版相关的机器和开发环境实际上他们并没有,有时还需要外部公司帮助进行一些测试工作。由于没有相应的开发环境,一旦出现闪退等问题,解决难度自然会变得更大。此外,有时候需要与国产操作系统厂商进行特殊的合作,甚至需要对方寄送特定的编译好的代码库,但前后往往会花费一个月的时间才能收到。而在本次重构之后,“Linux功能跟 Windows一样多了”。

(责任编辑:admin)