QQ技术团队专访:QQ NT全新重构背后的思考(3)
时间:2023-08-13 23:39 来源:网络整理 作者:墨客科技 点击:次
“我们觉得不需要单纯因为口碑问题,就对这个选型没有了期待。还是要从实际出发,哪种技术栈适合你的产品,看看到底能不能有技术实力去把这个事情搞定。” 内存优化:如何有效控制 Electron的内存占用? 外界之所以会觉得 Electron内存占用高,是因为其本身是一个多进程的架构,主进程基于 Node.js,而每个窗口都对应一个渲染进程以及 V8实例。可以说从技术框架层面上,上手写代码很容易,但不容易去管控它的内存。 QQ技术团队认为 Electron的开发者更多的是前端的开发者,可能在思维上没有去考虑怎么在这样一套技术框架里,去对内存数据进行管理和管控。开发者需要从前端开发者的思维,转变为客户端开发者的思维。 综合来看,对内存的看法其实不完全是 Electron的技术框架所导致的,更多的是门槛上、开发思维上,导致内存没有得到很好的关注和优化。其实最简单的 Electron应用大概也就只有几十兆的内存占用。因为前端原本更多还是停留在开发即用即走的 Web站点,很少实现一个超大客户端,缺乏控制内存的经验,所以面对 QQ这么大一个产品的时候,你就必须非常在意内存的使用和管控。 至于优化内存的突破口,可以说是从各个层面:从消息的链路中的每条消息的收发上,数据是怎么管理,包括像窗口及会话的管理,都得精打细算,也会做一些数据本地化和一些机制的按需加载,包括渲染上他们也提出一个根本的原则:“要做到所见才占用”,既我们看到的内容才占用这一部分内存,没看到和用不到的任何场景的内存就不应该再占用,通过各种方式来去让内存达到一个设定的目标。 他们也使用了不同维度的内存分析工具,从 V8引擎到进程,再到整个应用程序,打通整个链路进行多角度的细节分析,以此来定位内存使用的瓶颈。之后采取一系列的针对性优化策略,包括缓存策略、按需加载、优雅降级等,同时使用线上监控、自动化测试手段,包括借助开发框架、工具建设、代码审查等,来阻止性能退化。(更多细节可以参看技术文章:新 QQ NT桌面版如何实现内存优化探索?)
经过一系列组合优化之后,QQ的内存在长时间挂机的条件下,平均稳定在 220M左右。“现在优化还是不错的,比老版本要好很多。我们认为这个难题还是可以被很好的攻克,内存并不是大家认为的这么不可控,但是也需要团队去花费相当精力去探索和实践,才能去把内存控制到一个比较理想的状态。” 未来展望:QQ的前端发展规划是怎样的? 目前 QQ的前端团队作为一个公线团队,不仅负责桌面 QQ的研发,还有 QQ基础运营、QQ空间以及基于 QQ生态的创新项目研发,有比较多的线上项目的开发与维护和内部研效工具的建设。涉及的技术栈,包括 H5、Electron、Cocos、小程序、WebGL、WebAssembly、WebRTC等。他们也表示会继续夯实这些技术,同时也不断地打破立下的性能目标,希望让桌面 QQ覆盖更多平台。 他们也正在积极拥抱 AI,让 AI在质量和效率上辅助日常开发。比如:前端设计稿还原,之前更多是一个耗时的体力活,D2C是 QQ前端一直探索的方向,之前使用纯规则转换生成代码,在视觉还原上效果还不错,但是代码可读性和可维护性不能很好的满足预期,所以除了一些日抛型的运营活动有些使用之外,比较难扩大成果。现在 D2C结合大模型,生成的代码质量高了很多,也能很方便的将代码与 UI组件库做映射,达到可以在核心业务中高效使用,达到通过 AI提升研发效率的目的。针对一些无设计稿的管理平台开发,使用 P2C提效,目前也有了一些不错的案例。 另外,QQ技术团队也在积极探索 AI更广阔的应用场景,比如代码评审,基本的 Lint检检是难以实现的,但将已经掌握的内存泄漏模式通过规则的形式给到 AI,可以很方便地给开发同学一些不错的建议,为性能看家护院提供多一道保障。 写在最后 QQ NT项目于 2022年 3月份启动,macOS QQ花了该团队 3个月的开发时间,9月份上架 App Store,迭代了几个版本后同步开始开发 Linux QQ,并于这一年的最后一天上架各 Linux应用市场,作为给 Linux用户的一份特殊的新年礼物。2023年 QQ团队开始去聚焦做 Windows QQ NT的开发,7月正式上架应用市场和官网。同时移动端的 QQ从 2022年的 Q4开始开发,也已经完成了全量升级和发布。 (责任编辑:admin) |
