融云分享基于 Rust 的鸿蒙 SDK 开发实践,荣获「2024 鸿蒙生态 SDK 星河奖」
12 月 5 日,以“同心聚力,共建共享鸿蒙新生态”为主题的“鸿蒙生态伙伴 SDK 开发者论坛”在京举行。
融云凭借对鸿蒙生态的率先适配和创新贡献,荣获华为鸿蒙生态“HarmonyOS NEXT SDK 星河奖”。
本次论坛邀请了多位行业领导者参与,共同探讨鸿蒙生态的合作与创新模式。融云 CTO 岑裕受邀发言,分享了融云旗下 SDK 适配原生鸿蒙系统的实践经验。
作为全球超 155 万 App 选择的即时通讯和实时音视频 SDK 厂商,融云 SDK 适配全球 3000 多款主流机型。“融云为众多在稳定性方面有高要求的超级 App 提供服务,我们的 SDK 在崩溃率和稳定性上表现出色,确保崩溃率控制在十万分之五以下。”岑裕说。
在这样的性能状态和高质量标准要求下,融云鸿蒙 SDK 的研发也面对着较大的挑战。
在鸿蒙官方的支持下,融云技术团队最终在保证内存/线程安全的基础上对问题进行了快速收敛,成功上线融云鸿蒙 SDK,并实现了跨平台的能力对齐。
重构基建
以鸿蒙为契机重新审视底层架构
如上图所示,这是融云 IM 的客户端架构,也是当前比较通行的多端架构设计方案。
移动互联网到现在走过了十多年的历程,大量互联网产品的底层都采用了类似的架构——
☑ 底层通用的跨平台库多是用 C++ 构建的,上层各平台采用完全不同的技术栈来实现。
☑ 随着业务的迭代和版本的特性发展,不同平台之间可能会逐渐分离以方便快速迭代。
☑ 很多业务还会有跨端的需求,比如 Flutter、React Native 和近几年国内比较火的 uni-app 等。
整体而言,在移动互联网时代,应用的技术框架面临着非常纷繁复杂的系统生态。
而鸿蒙给了大家一个契机,去重新审视过去十多年的基建,并思考如何进行重构。
融云实践
基于Rust的融云鸿蒙SDK开发
融云的 SDK 生态覆盖多端,选用了支持多平台能力对齐的跨平台方案 Rust。
这是因为:“Rust 的编程模型在内存和线程安全上有非常大的提升。同时,它有一定的后发优势,在工程化方面做得非常完善。比如,Rust 可以直接用代码注释来写单元测试,可以保证测试代码和核心代码版本完全一致,非常有助于问题的快速收敛。”岑裕表示。
同时,融云鸿蒙 SDK 对底层通信能力,如 TCP、QUIC、WebSocket、Long Pulling 等做了统一封装。这也是融云的通信网络在服务覆盖全球 245 个国家和地区的情况下依然保持健壮的原因之一。
数据库方面通过数据库加密和数据沙箱等满足数据安全需求。
业务层的连接、会话、消息、聊天室、超级群等统一用 Rust 来做,但会分 C ABI 和 Rust ABI 两个接口来对应不同的系统和平台。融云平台统一去做桥接,保证所有的平台和业务表达是一致的。
目前,Rust 官方已经支持鸿蒙系统。鸿蒙为了方便广大开发者,提供 ArkTS 到 C++ 的绑定,包括里面的线程安全函数处理,在健壮性、代码生成效率等方面也做了很多工作。
在此基础上,融云的鸿蒙 SDK 在架构上可大概分为两层:一层是鸿蒙社区提供的系列方案,另一层是 Rust 的一些核心库。
在这样的整体架构和策略指引下,融云完成了从 C++ 迁移到 Rust 的整个核心代码重构。
6 月原生鸿蒙系统 HarmonyOS NEXT 正式发布后,融云率先上线了 HarmonyOS NEXT 版融云 IM SDK,完成针对“纯血鸿蒙”操作系统的 SDK 研发,帮助开发者高效率、低成本地完成鸿蒙化开发工作。
融云鸿蒙 SDK 上线
在这个过程中,融云与鸿蒙联合开发针对性解决了创新生态发展过程中难免的支持库不全、编译链缺失等问题,也为整个生态的构建和发展做出了重要贡献。
未来,针对鸿蒙和 Rust 两个越来越流行的生态之间如何打通和优化发展,以及如何基于鸿蒙对 AI 能力的原生支持平滑地转向 AI 时代的应用生态,融云都将与生态各方携手向前,持续探索。