12月5日,以“同心聚力,共建共享鸿蒙新生态”为主题的“鸿蒙生态伙伴SDK开发者论坛”在京举行。
融云凭借对鸿蒙生态的率先适配和创新贡献,荣获华为鸿蒙生态“HarmonyOS NEXT SDK星河奖”。
本次论坛邀请了多位行业领导者参与,共同探讨鸿蒙生态的合作与创新模式。融云CTO岑裕受邀发言,分享了融云旗下SDK适配原生鸿蒙系统的实践经验。
作为全球超155万App选择的即时通讯和实时音视频SDK厂商,融云SDK适配全球3000多款主流机型。“融云为众多在稳定性方面有高要求的超级App提供服务,我们的SDK在崩溃率和稳定性上表现出色,确保崩溃率控制在十万分之五以下。”岑裕说。
在这样的性能状态和高质量标准要求下,融云鸿蒙SDK的研发也面对着较大的挑战。
在鸿蒙官方的支持下,融云技术团队最终在保证内存/线程安全的基础上对问题进行了快速收敛,成功上线融云鸿蒙SDK,并实现了跨平台的能力对齐。
重构基建:以鸿蒙为契机重新审视底层架构
如上图所示,这是融云IM的客户端架构,也是当前比较通行的多端架构设计方案。
移动互联网到现在走过了十多年的历程,大量互联网产品的底层都采用了类似的架构——
1、 底层通用的跨平台库多是用C++构建的,上层各平台采用完全不同的技术栈来实现。
2、随着业务的迭代和版本的特性发展,不同平台之间可能会逐渐分离以方便快速迭代。
3、很多业务还会有跨端的需求,比如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研发,帮助开发者高效率、低成本地完成鸿蒙化开发工作。
在这个过程中,融云与鸿蒙联合开发针对性解决了创新生态发展过程中难免的支持库不全、编译链缺失等问题,也为整个生态的构建和发展做出了重要贡献。