融云分享基于 Rust 的鸿蒙 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 研发,帮助开发者高效率、低成本地完成鸿蒙化开发工作。

在这个过程中,融云与鸿蒙联合开发针对性解决了创新生态发展过程中难免的支持库不全、编译链缺失等问题,也为整个生态的构建和发展做出了重要贡献。

未来,针对鸿蒙和 Rust 两个越来越流行的生态之间如何打通和优化发展,以及如何基于鸿蒙对 AI 能力的原生支持平滑地转向 AI 时代的应用生态,融云都将与生态各方携手向前,持续探索。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/937982.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

iperf3 带宽性能测量工具

随笔记录 目录 1 背景介绍 2. Iperf3 2.1 基本框架介绍 2.2 Iperf3 发送TCP包 2.3 IPerf 发送UDP 包 1 背景介绍 基于测试USER DMA 压力测试需求。 2. Iperf3 2.1 基本框架介绍 Iperf3 发送数据包 TCP/UDP 包 1. 查看网卡配置信息 2. 此处因共用一张板卡&#xff0…

Java-27 深入浅出 Spring - 实现简易Ioc-03 在上节的业务下手动实现IoC

点一下关注吧!!!非常感谢!!持续更新!!! 大数据篇正在更新!https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了: MyBatis&#xff…

vue使用pdfh5.js插件,显示pdf文件白屏

pdfh5,展示文件白屏,无报错 实现效果图解决方法(降版本)排查问题过程发现问题查找问题根源1、代码写错了?2、预览文件流的问题?3、pdfh5插件更新了,我的依赖包没更新?4、真相大白 彩蛋 实现效果图 解决方法…

【机器学习算法】——决策树之集成学习:Bagging、Adaboost、Xgboost、RandomForest、XGBoost

集成学习 **集成学习(Ensemble learning)**是机器学习中近年来的一大热门领域。其中的集成方法是用多种学习方法的组合来获取比原方法更优的结果。 使用于组合的算法是弱学习算法,即分类正确率仅比随机猜测略高的学习算法,但是组合之后的效果仍可能高于…

C/S软件授权注册系统(Winform+WebApi+.NET8+EFCore版)

适用软件:C/S系统、Winform桌面应用软件。 运行平台:Windows .NETCore,.NET8 开发工具:Visual Studio 2022,C#语言 数据库:Microsoft SQLServer 2012,Oracle 21c,MySQL8&#xf…

Big Model weekly | 第49期

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 01 Magnetic Preference Optimization: Achieving Last-iterate Convergence for Language Models Alignment 自我对弈方法在多个领域增强模型能力方面展现出了显著的成功。在基于人类反馈的强化学习&#xff0…

如何建设金融数据中心

目录 总则 概述 要求 基本原则 数据中心治理 概述 战略管控 战略规划 战略实施 延伸阅读 总则 概述 本文以描述金融数据中心的治理域内容为基础,从金融数据中心建设、运营及安全保障的角度出 发,逐一描述场地环境、网络通信、运行管理和风险管控等能力域的具体…

医学分割数据集B超图片肝脏分割数据集labelme格式271张1类别

数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):271 标注数量(json文件个数):271 标注类别数:1 标注类别名称:["liver"] 每个类别标注的框数&#xf…

Android:展锐T760平台camera PDAF调试

一、平台PDAF流程 目前展锐平台主要支持Shield PD Sensor、Dual PD Sensor 1、Shield PD Sensor Type1相位差和信心度结果直接从Sensor输出,不经过平台算法库。 Type2Sensor端抽取PD信息, 放在一块buffer输出, PDAF算法库算出相位差和信心度。 Type3Sensor端直接输出将带有…

MySQL的历史和地位

秋招之后,开始深入学习后端开发知识啦。把学到的东西分享给大家最开心啦。就从MySQL开始吧。 首先说一下MySQL的历史和地位。主要是看一下我们为什么要学习,而不是说让我们学什么我们就学什么。 地位 这张图是我从DB-Engines截取的2024年12月最新的数据…

鸿蒙项目云捐助第七讲鸿蒙App应用的首页推荐模块布局的实现

鸿蒙项目云捐助第七讲鸿蒙App应用的首页推荐模块布局的实现 最后设置首页的推荐模块,参考模板如下图所示。 一、首页热门推荐模块的实现 对于热门推荐模块,先有上面的小标题栏,这里的标题栏也有一个小图标,首先从“百度图库”中…

使用ENSP实现NAT(2)

一、NAT的类型 二、静态NAT 1.项目拓扑 2.项目实现 路由器AR1配置: 进入系统视图 sys将路由器命名为AR1 sysname AR1关闭信息中心 undo info-center enable 进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为192.168.10.254/24 ip address 192.168.10.254 24进…

【1211更新】腾讯混元Hunyuan3D-1文/图生3D模型云端镜像一键运行

目录 项目介绍 显存占用 11月21 新增纹理烘焙模块Dust3R 烘焙相关参数: AutoDL云端镜像 启动说明 标准模型下载 【1212更新】腾讯混元Hunyuan3D-1文图生3D模型云端镜像一键运行 项目介绍 https://github.com/Tencent/Hunyuan3D-1 腾讯混元 3D 生成模型,支持…

PHP 应用 ImageMagick

ImageMagick是什么? ImageMagick是一款功能强大、跨平台的图像处理软件。它可以读取、转换和输出大量的图片格式,支持各种各样的图像处理操作,如调整大小、旋转、加水印、格式转换等。在PHP中使用ImageMagick,可以让我们在web应用…

OpenCV圆形标定板检测算法findGrid原理详解

OpenCV的findGrid函数检测圆形标定板的流程如下: class CirclesGridClusterFinder {CirclesGridClusterFinder(const CirclesGridClusterFinder&); public:CirclesGridClusterFinder

阿里云服务器手动搭建WordPress【官方文档注意事项】

这是官方文档 注意事项 先配LNMP,我的上一篇文章到这里发现,没有基于ubuntu的教程,所以创建服务器时选择centos在官方文档第四步“下载WordPress,并移动至网站根目录”中,首先它让cd /usr/share/nginx/html&#xff…

vue运行项目时local有显示 但是network却显示unavailable

问题描述 日常开发中 和后端本地调试时 后端需要使用你的本地去访问页面 可运行项目时会出现network显示unavailable的情况 解决方式 1.其实这只是vue脚手架对于ip地址获取的方式兼容上有一些问题 但其实是不影响ip访问本地的 你可以直接cmd内ipconfig去查看自己的ip然后…

Go项目-----Kubernetes使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言基本概念kubectl工具部署web服务生成镜像编写deployment 编写service启动服务 k8s部署mysql编写pvc编写pv编写service 部署redis集成部署mysql和redis 前言 这…

SpringCloud无介绍快使用,sentinel注解@SentinelResource的基本使用(二十三)

TOC 问题背景 从零开始学springcloud微服务项目 注意事项: 约定 > 配置 > 编码IDEA版本2021.1这个项目,我分了很多篇章,每篇文章一个操作步骤,目的是显得更简单明了controller调service,service调dao默认安装ngi…

紫光展锐5G融云方案,开启云终端新时代

近年来,云终端凭借便捷、高效、高性价比的优势正逐步在各行各业渗透。研究机构IDC的数据显示,2024上半年,中国云终端市场总体出货量达到166.3万台,同比增长22.4%,销售额29亿元人民币,同比增长24.9%&#xf…