手机QQ技术架构大升级:解耦重构之路
手机QQ技术架构大升级:解耦重构之路
手机QQ作为一款拥有数亿用户的即时通讯应用,经过20多年的发展,已经从最初的简单聊天工具演变为集空间、频道、短视频、增值服务等于一体的超级应用。然而,随着功能的不断增加,代码的不断累积,手机QQ的技术架构也变得越来越臃肿,影响了开发效率和用户体验。为了解决这些问题,腾讯团队从2020年开始着手进行大规模的技术架构升级。
历史包袱与挑战
在过去的20多年里,手机QQ从一个简单的即时通讯工具,逐渐成长为承载空间、频道、短视频、增值服务等众多业务的超级应用。随着业务的复杂度不断增加,最初设计的技术架构已经无法满足需求,业务之间的耦合越来越严重,时常会出现修改一个问题却牵扯出更多问题的情况,历史技术债务越积越多。
2020年,QQ开发团队决定对这一庞大的项目进行架构升级。考虑到手机QQ的业务复杂度和代码量级都非常庞大,团队决定采用分阶段、逐步演进的策略来进行架构升级。
解耦重构:分阶段突破
第一阶段:核心代码解耦
2020年11月至2021年2月,团队启动了名为“工业化实践”的技术架构升级项目。这一阶段的主要目标是完成约300万行核心代码的解耦,将业务划分为约30个基础模块和40个基础组件。通过接口与服务的隔离,确保新功能开发不再产生严重的代码耦合。
第二阶段:建设防劣化机制
2021年3月至6月,团队继续推进业务模块的解耦工作,并开始建设防劣化机制。这一阶段的成果包括:
- 确保API代码占比与依赖数不再增加
- 完成防劣化机制的搭建,在代码合入阶段拦截不合理修改
- 完善动态化能力,优化插件与宿主间的通信机制和发布效率
第三阶段:实现子工程化
2021年7月以后,团队进一步完善基础模块和组件化建设,实现了频道、小世界等业务的子工程化,支持独立编译运行。这一阶段的工作重点是建立基础模块的发布组件流程,确保各模块能够独立迭代。
NT架构:跨平台统一
在完成解耦重构后,团队将注意力转向了解决版本碎片化问题。不同平台的客户端各自发展,导致代码复用率极低,开发和维护成本居高不下,用户体验也参差不齐。为了解决这些问题,团队启动了NT架构升级项目。
NT架构的核心思想是采用C++跨平台内核,将IM核心业务逻辑(包括好友、群、频道消息处理,资料与关系链管理,富媒体收发,实时音视频等)统一下沉到跨平台层。这一设计不仅提高了代码复用率,还确保了多端体验的一致性。
为了控制项目风险,团队首先在用户量相对较少的桌面端进行新架构的功能验证和质量测试。在桌面端验证成功后,再逐步向移动端迁移,最终顺利完成了iOS和安卓平台的集成。
成果与影响
这次架构升级带来了显著的技术收益:
- 编译速度提升50%
- 代码冲突文件数减少60%
- 冲突次数减少30%
- 开发效率大幅提升
以聊天窗口(AIO)为例,基于全新数据流架构、数据预加载和UI逻辑并行化的设计思路,团队实现了单向数据流驱动与异步加载渲染,系统资源全力供给AIO消息列表,最终性能指标大幅提升,用户在查看、跳转、滑动消息时体验更加顺畅丝滑。其他核心场景如消息列表页、消息与富媒体收发、图片视频查看等,也通过类似的技术优化路径实现了性能全面提升。
这次架构升级不仅解决了历史遗留的技术问题,也为手机QQ的未来发展奠定了坚实的基础。通过模块化和组件化的改进,开发团队能够更快地响应业务需求,提升产品质量,为用户带来更好的使用体验。