前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >HarmonyOS开发:架构相关内容

HarmonyOS开发:架构相关内容

原创
作者头像
三掌柜
发布2024-12-01 23:26:18
发布2024-12-01 23:26:18
2420
举报
文章被收录于专栏:鸿蒙开发鸿蒙开发

目录

  • 前言
  • HarmonyOS的分布式架构特点
  • 架构设计原则
  • 架构设计实践
  • 创新点展示
  • 拓展:分布式文件系统架构
  • 结束语

前言

不用多讲,大家也都了解HarmonyOS(鸿蒙操作系统),它以其革命性的多设备协同能力和分布式架构,为鸿蒙应用开发带来了全新的设计思路。在这样的环境下,应用不仅要在单一设备上运行流畅,还要能够在多个设备间无缝切换和协同工作。而且鸿蒙操作系统以其强大的系统功能,结合现阶段火爆的生态环境,让HarmonyOS开发越来越热,越来越多的开发者也在入局且深度使用HarmonyOS开发,关于HarmonyOS的架构相关的内容也越来越受到关注。那么本文就来分享如何在HarmonyOS中设计轻量化、模块化的架构,以支持跨设备的无缝运行,并展示架构设计的创新点。

HarmonyOS的分布式架构特点

在深入架构设计之前,先来了解一下HarmonyOS的分布式架构特点,这里只来分享几个它的核心特点:

  • 多设备协同:HarmonyOS能够实现多个设备之间的资源共享和任务协同。
  • 弹性部署:原生鸿蒙应用可以根据需要在不同设备上灵活部署。
  • 分布式软总线:提供了设备间通信的高速、低延迟通道。
  • 一次开发,多端部署:鸿蒙开发者可以编写一次代码,然后在多个设备上运行。

架构设计原则

再来介绍一下HarmonyOS的架构设计原则,这里从轻量化设计和高扩展性设计两个方面来介绍。

1、轻量化设计

关于轻量化的设计,是从模块化、按需加载、资源优化整合三个模块来看,具体如下所示:

  • 模块化:将应用拆分为独立的功能模块,每个模块负责特定的任务。
  • 按需加载:根据用户的实际需求动态加载模块,减少应用启动时的资源消耗。
  • 资源优化:优化应用使用的资源,包括内存、存储和电量。

2、高扩展性设计

关于高扩展性设计,这里从可插拔架构、分布式服务、弹性设计三个模块来介绍,具体如下所示:

  • 可插拔架构:设计可插拔的组件,方便在未来添加新功能或替换旧组件。
  • 分布式服务:利用HarmonyOS的分布式服务框架,实现服务的跨设备调用。
  • 弹性设计:设计能够适应不同设备性能和资源的应用架构。

架构设计实践

再来分享一下关于HarmonyOS的架构设计具体实践的操作。

1、轻量化架构实现

根据鸿蒙官方的内容,在HarmonyOS中,轻量化架构可以通过以下方式实现:

  • 使用Ability代替Activity:Ability是HarmonyOS中的基本执行单元,比传统Activity更轻量。
  • 分布式任务调度:根据设备的能力分配任务,减少单个设备的负载。
  • 状态管理:使用轻量级的状态管理方案,如Proxy模式,减少不必要的数据同步。

2、高扩展性架构实现

关于高扩展性的实现,这里是从下面三个地方来介绍:

  • 服务发现与绑定:利用HarmonyOS的服务发现机制,动态发现并绑定跨设备服务。
  • 事件总线:使用事件总线模式,实现跨设备事件的发布和订阅。
  • 插件化架构:设计插件化的架构,允许应用在运行时动态加载或卸载功能模块。

创新点展示

接下来介绍一下关于创新点相关的内容,这里从三个方面来讲。

1. 分布式数据库

第一个创新点就是利用HarmonyOS的分布式数据库能力,可以实现数据在多个设备间的实时同步,无需复杂的数据同步逻辑。

2. 跨设备UI渲染

第二个创新点是通过分布式软总线,可以将UI渲染任务分配给性能更强的设备,提升渲染效率和用户体验。

3. 智能路由选择

第三个创新点就是根据网络状况和设备性能,智能选择最佳的服务路由,确保服务调用的高效和稳定。

拓展:分布式文件系统架构

这里再来着重分享一下关于HarmonyOS的分布式文件系统架构相关内容。

1、分布式文件系统

在HarmonyOS中,分布式文件系统提供跨设备的文件访问能力,它适用于下面的场景:

  • 两台设备组网,用户可以利用一台设备上的编辑软件编辑另外一台设备上的文档。
  • 平板保存的音乐,车载系统直接可见并可播放。
  • 户外拍摄的照片,回家打开平板直接访问原设备拍摄的照片。

另外就是,hmdfs在分布式软总线动态组网的基础上,为网络上各个设备结点提供一个全局一致的访问视图,支持开发者通过基础文件系统的接口进行读写访问,具有高性能、低延时等优点。

2、分布式文件系统架构

先来看一下分布式文件系统架构图,具体如下所示:

具体的核心内容如下所示:

(1)distributedfile_daemon

其实distributedfile_daemon主要负责设备上线监听、通过软总线建立链路,并根据分布式的设备安全等级执行不同的数据流转策略。

(2)hmdfs

至于hmdfs,它实现在内核的网络文件系统,包括缓存管理、文件访问、元数据管理和冲突管理等。

a.缓存管理

  • 设备分布式组网后,hmdfs提供文件的互访能力,但不会主动进行文件数据传输和拷贝。如果应用需要将数据保存到本地,需主动拷贝。
  • hmdfs保证Close-to-Open的一致性,即一端写关闭后,另外一端可以读取到最新数据,不保证文件内容的实时一致性。
  • 数据在远端写入,但是由于网络原因未及时回刷,文件系统会在下次网络接入时回刷本地,但是如果远端已修改则无法回刷。

b.文件访问

关于文件访问,主要是从下面入手,但是需要注意的是symlink:不支持。具体如下所示:

  • 文件访问接口与本地一致(ohos.file.fs)。
  • 如果文件在本地,则堆叠访问本地文件系统。
  • 如果文件在其他设备,则同步网络访问远端设备文件。

c.元数据管理

  • 分布式组网下,文件一端创建、删除、修改,另一端可以“立即”查看到最新文件,看到速度取决于网络情况。
  • 远端设备离线后,该设备数据将不再在本端设备呈现。但由于设备离线的感知具有延迟,可能会造成部分消息4s超时,因此开发者需要考虑接口的网络超时或一些文件虽然可以看到,但实际设备可能已离线的场景。

d.冲突处理

  • 本地与远端冲突 ,远端文件被重命名,看到的同名文件是本地同名文件,远端文件被重命名。
  • 远端多个设备冲突,以接入本设备ID为顺序,显示设备ID小的同名文件,其他文件被依次重命名。
  • 如果组网场景,目录树下已经有远端文件,创建同名文件,提示文件已存在。
  • 冲突文件显示_conflict_dev后依次加id,id从1自动递增。
  • 同名目录之间仅融合不存在冲突,文件和远端目录同名冲突,远端目录后缀加_remote_directory。

3、设置分布式文件数据等级

由于不同设备本身的安全能力差异较大,一些小的嵌入式设备安全能力远弱于平板等设备类型。用户或者应用不同的文件数据有不同安全诉求,比如个人的健康信息和银行卡信息等不期望被弱设备读取。所以说HarmonyOS提供一套完整的数据分级、设备分级标准,并针对不同设备制定不同的数据流转策略。这里主要是通过使用API接口setSecurityLabel和getSecurityLabel的使用来讲,举一个具体示例:

//获取通用文件沙箱路径,并设置数据等级标签

代码语言:txt
复制
import { securityLabel } from '@kit.CoreFileKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { common } from '@kit.AbilityKit';
import { fileIo as fs } from '@kit.CoreFileKit';

// 获取需要设备数据等级的文件沙箱路径
let context = getContext(this) as common.UIAbilityContext; // 获取UIAbilityContext信息
let pathDir = context.filesDir;
let filePath = pathDir + '/test.txt';

//打开文件
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
// 设置文件的数据等级为s0
securityLabel.setSecurityLabel(filePath, 's0').then(() => {
  fs.closeSync(file);
}).catch((err: BusinessError) => {
});

结束语

通过本文关于HarmonyOS开发中架构相关内容的介绍,尤其是关于分布式架构的详细介绍,它为应用开发提供了强大的支持,也带了非常好的效果。通过轻量化和高扩展性的架构设计,我们可以构建出既高效又灵活的应用,满足多设备协同的需求。而且随着HarmonyOS生态的不断发展和成熟,可以期待更多的创新应用能够利用上文介绍的相关架构,给用户提供更加丰富和便捷的服务。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 前言
  • HarmonyOS的分布式架构特点
  • 架构设计原则
    • 1、轻量化设计
    • 2、高扩展性设计
  • 架构设计实践
    • 1、轻量化架构实现
    • 2、高扩展性架构实现
  • 创新点展示
    • 1. 分布式数据库
    • 2. 跨设备UI渲染
    • 3. 智能路由选择
  • 拓展:分布式文件系统架构
    • 1、分布式文件系统
    • 2、分布式文件系统架构
      • (1)distributedfile_daemon
      • (2)hmdfs
      • 3、设置分布式文件数据等级
  • 结束语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档