ITPub博客

首页 > 数据库 > 数据库开发技术 > (OpenHarmony、Harmony)鸿蒙系统架构理念

(OpenHarmony、Harmony)鸿蒙系统架构理念

数据库开发技术 作者:DataRider 时间:2025-11-11 08:10:24 0 删除 编辑

前沿

本文章是根据以下视频和文章的知识以个人理解整合产出的,如有理解错误欢迎讨论指正(叠甲

概述

HarmonyOS 作为面向万物互联时代的全新操作系统,在架构设计上突破了传统移动操作系统的局限,采用了分布式架构理念。理解 HarmonyOS 的系统架构设计原理、分布式核心能力以及与传统 AOSP 的差异,对于深入掌握鸿蒙开发、构建高性能跨设备应用至关重要。

本文将从系统架构设计理念、AOSP 与 OpenHarmony 的架构对比、分布式核心能力、图形渲染系统、一次开发多端部署等多个维度深入解析 HarmonyOS 的架构特征。

1. HarmonyOS 架构总览

1.1. 基本概念

HarmonyOS 采用分层架构设计,从下至上分为内核层、系统服务层、应用框架层和应用层。整体架构遵循"纵向分层、横向解耦"的设计原则,实现了系统的模块化和组件化。

1.2. 架构分层解析

HarmonyOS 的架构可以理解为:

数据结构 + 算法 = 程序
架构设计 + 分布式能力 = HarmonyOS

1.2.1. 架构理解维度:

  • 纵向维度:从浅到深,应用层是用户最容易接触到的层面,内核层是用户最难接触到的底层
  • 横向维度:同等级别的相关系统集和应用能力,彼此独立又相互协作

1.2.2. 乐高化特性:

系统各模块如同乐高积木,可以根据不同设备的硬件配置和功能需求,灵活地抽离或组合系统组件。

1.2.3. 适用场景示例:

  • 无屏幕设备:不需要图形图像子系统
  • 低配置设备:可以裁剪不必要的增强软件服务子系统
  • 智能家居设备:可以只保留核心的分布式能力和硬件服务

1.3. 架构层级详解

层级

核心内容

主要功能

应用层

系统应用、桌面、控制栏、设置、电话等

提供用户直接交互的应用程序

应用框架层

UI框架、元服务/元能力框架、分布式任务调度、分布式数据管理、分布式软总线等

为应用开发提供统一的开发接口和能力

系统服务层

基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集

提供系统级服务和硬件抽象

内核层

Linux Kernel、LiteOS、驱动子系统(HDF统一驱动框架)

提供操作系统内核和硬件驱动支持

2. AOSP 架构特点分析

2.1. 架构形态 => 正三角形

AOSP(Android Open Source Project) 采用传统的水平分层架构,其架构形态类似于正三角形:

  • 顶端:应用层(窄)
  • 底部:内核层(宽)

2.2. 核心特点

cke_439356.png

2.2.1. 水平分层架构

AOSP 采用严格的水平分层结构,层内模块高度耦合:

  • 裁剪与兼容难以平衡:裁剪某个模块可能导致其他依赖模块失效
  • 维护成本高:模块间的强耦合导致系统维护和升级困难
  • 硬件兼容性差:少数硬件配置无法满足时,整个系统可能无法运行

2.2.2. 代码膨胀,配置要求高

  • 内存最低配置 > 2GB:由于系统组件的强耦合,即使是轻量级应用也需要较高的硬件配置
  • 设备成本高:对于IoT设备、车载设备等资源受限场景,AOSP 的配置要求过高

2.2.3. 横纵交叉耦合

  • 系统启动慢:模块间的强依赖关系导致系统启动需要加载大量组件
  • 不适合车载等频繁上下电设备:启动时间长,影响用户体验

2.3. AOSP 架构流程图

cke_350933.png

2.4. 架构优缺点对比

方面

优点

缺点

生态

底部基座厚实,生态丰富,第三方库众多

-

开发成本

开发者熟悉,学曲线平缓

-

扩展性

-

应用层窄,扩展性逐渐变差

性能

-

系统启动慢,资源消耗大

适配性

-

难以适配多种硬件配置

维护成本

-

模块耦合严重,维护成本高

3. OpenHarmony 架构特点分析

3.1. 架构形态 => 倒三角形

OpenHarmony 采用创新的分布式架构,其架构形态类似于倒三角形:

  • 顶端:应用层(宽)
  • 底部:内核层(窄)

3.2. 核心特点

cke_499035.png

3.2.1. 上下水平分层,组件独立部署

OpenHarmony 的分层设计强调组件的独立性和可灵活配置性:

  • 水平动态扩展:能够配置裁剪,支持动态管理,按需加载/回收
  • 能力部件化:通过灵活配置组合构成适用于各行业设备的最匹配OS系统
  • 高内聚、低耦合:遵循从上向下单向依赖,避免循环依赖;水平切割,遵循从右到左单向依赖,满足独立可拆分

3.2.2. 乐高化模块设计

系统各组件如同乐高积木,可以根据设备需求自由组合:

  • 最小系统:可以只包含内核 + 分布式软总线 + 基础服务
  • 轻量设备:根据设备功能选择性加载图形子系统、媒体子系统等
  • 全功能设备:加载完整的系统服务和应用框架

3.3.3. 扩展性强

倒三角形的架构设计使得应用层具有更大的扩展空间:

  • 支持多种设备形态:手机、平板、手表、电视、车机、音箱、智能家居等
  • 统一开发接口:一次开发,多端部署
  • 能力可组合:不同设备可以互相借用硬件能力

3.3. OpenHarmony 架构流程图

cke_456697.png

3.4. 架构优缺点对比

方面

优点

缺点

扩展性

应用层宽,扩展性极强

-

灵活性

乐高化设计,模块可自由组合

-

性能

按需加载,启动快,资源占用低

-

适配性

可适配从 IoT 到 PC 的各种设备

-

分布式

原生支持分布式能力

-

生态

-

底部基座相对薄弱,生态还在建设中

学习成本

-

开发者需要学习新的开发范式

4. AOSP 与 OpenHarmony 架构对比

4.1. 架构形态对比

cke_532079.png

4.2. 核心差异对比表

对比维度

AOSP

OpenHarmony

架构形态

正三角形(应用层窄,内核层宽)

倒三角形(应用层宽,内核层窄)

分层特性

水平分层,层内模块耦合严重

上下水平分层,组件独立部署

扩展性

应用层扩展受限,难以支持多设备形态

应用层扩展性强,天然支持多设备

裁剪能力

裁剪难度大,模块间强依赖

按需裁剪,乐高化组合

启动速度

启动慢,需要加载大量耦合模块

启动快,按需加载

内存要求

最低 > 2GB

从几十KB(IoT)到GB(全功能设备)

渲染架构

APP独立渲染,窗口渲染合成

后端统一渲染,支持跨应用动效

图形能力

HWC层数限制(通常≤6层)

统一渲染架构,无层数限制

分布式能力

无原生分布式支持

原生分布式架构

硬件虚拟化

不支持

支持 6 类外设虚拟化

适用场景

手机、平板等传统移动设备

手机、平板、手表、车机、IoT等全场景

生态成熟度

生态成熟,第三方库丰富

生态建设中,持续完善

4.3. 设计理念对比

4.3.1. AOSP 设计理念:

  • 以单设备为中心
  • 强调系统稳定性和兼容性
  • 生态优先,架构相对保守

4.3.2. OpenHarmony 设计理念:

  • 以人为中心,将多设备抽象为"超级终端"
  • 强调分布式协同和跨设备能力
  • 架构创新,面向未来的万物互联

5. 分布式核心能力

5.1. 分布式软总线

5.1.1. 基本概念

分布式软总线是 HarmonyOS 分布式能力的基础设施,不是通讯协议,而是一个统一的连接和通信管理平台。

5.1.2. 核心功能

软总线主要完成以下 4 个核心功能:

  1. 发现:自动发现周边可信设备
  2. 连接:建立设备间的通信连接
  3. 组网:将多个设备组成分布式网络
  4. QoS保证:服务质量保证,根据场景智能选择最佳连接方式

5.1.3. 连接方式支持

现代设备支持的连接方式:

  • Wi-Fi:高带宽、低延迟,适合大数据传输
  • 蓝牙:低功耗,适合近距离连接
  • NFC:极近距离,适合配对和身份认证

5.1.4. 工作原理

cke_558981.png

5.2. 元数据共享对象驱动编程

5.2.1. 基本概念

元数据可以简单理解为分布式的全局变量,是一种基于数据驱动的跨设备编程模式。

5.2.2. 传统组件协作的问题

  1. 超级终端内,组件间的协作比单机上可能更频繁
  2. 组件的接口(IDL)变化更多:需要频繁增改接口,开发者需要在一开始就确定特别完善的接口

  3. 组件间协同大部分是基于数据的协同:数据的定义会更早期、更稳定

5.2.3. 元数据驱动的优势

  1. 无需关注通讯逻辑:组件间不直接通过接口协作
  2. 设计共享的元数据:组件函数分别对元数据进行绑定,并响应数据变化
  3. 组件修改元数据,来反映业务逻辑的结果:数据变化自动触发相关组件更新

5.2.4. 工作机制

cke_600608.png

代码示例(伪代码)

/**
 * 定义元数据类
 * 使用 @ObservedV2 装饰器使其具有响应式能力
 */
@ObservedV2
class SharedData {
  @Trace userLocation: Location = { lat: 0, lng: 0 }
  @Trace deviceStatus: string = 'idle'
}

/**
 * Ability1: 修改元数据
 * 导航能力,负责更新用户位置
 */
class NavigationAbility {
  sharedData: SharedData = new SharedData()
  
  /**
   * 更新用户位置
   * @param newLocation 新的位置信息
   */
  updateLocation(newLocation: Location) {
    // 修改元数据,自动通知所有订阅者
    this.sharedData.userLocation = newLocation
  }
}

/**
 * Ability2: 响应元数据变化
 * 地图显示能力,自动响应位置变化
 */
class MapDisplayAbility {
  sharedData: SharedData = new SharedData()
  
  build() {
    // 自动响应 userLocation 的变化
    Map({ center: this.sharedData.userLocation })
  }
}

5.3. 分布式硬件虚拟化

5.3.1. 基本概念

分布式硬件虚拟化是 HarmonyOS 的特征子系统,使得消费者拥有的不同智能终端能够互助为一个"超级终端"。

5.3.2. HAL 硬件抽象层

传统 HAL 概念:

HAL(Hardware Adaptation Layer) 是硬件抽象层,将硬件抽象成一组软件 API 供上层调用。

HarmonyOS 的扩展:

鸿蒙基于软总线的概念继续扩展 HAL 概念 => 跨物理终端的 HAL 访问

  • 在终端 A 上通过虚拟 HAL 去访问终端 B 上的真实硬件
  • 将周边设备作为手机能力的延伸

5.3.3. 关键特征

1. 实现不同设备的资源融合、设备管理、数据处理 -> 将周边设备作为手机能力的延伸。例如:

  • 手机调用电视的 4K 屏幕显示
  • 平板调用手机的 GPS 定位
  • 手表调用手机的摄像头拍照

2. 提供外部设备服务的 OS 虚拟化 -> 感知用户当前场景,为最佳交互方式提供支持:

  • 自动识别最佳输入设备(键盘、语音、触摸)
  • 自动选择最佳输出设备(屏幕、音箱、耳机)

3. 已支持 6 类外设虚拟化

  • Camera(摄像头):跨设备拍照录像
  • MIC(麦克风):跨设备语音输入
  • Speaker(扬声器):跨设备音频输出
  • Keyboard(键盘):跨设备文本输入
  • Display(显示):跨设备屏幕显示
  • Touch(触摸):跨设备触控交互

5.3.4. 架构示意

cke_2488430.png

5.3.5. 分布式能力工作流程

cke_2689716.png

6. 图形子系统对比

6.1. AOSP 图形架构

6.1.1. 核心特点

1. 渲染进程无法获得其他应用渲染信息

  • 无法做应用间的"空间动效"
  • 应用窗口存在遮挡时会重复渲染等情况

2. 受 HWC 层数限制

  • 无法很好地支持PC、车机、投屏等窗口层数超过 6 层的使用场景
  • HWC(Hardware Composer) 硬件合成器的层数限制

6.1.2. 架构示意

  • APP1 和 APP2 各自独立渲染
  • 每个应用有独立的 Render Context
  • 窗口渲染通过 Layer Manager 进行合成
  • 最终通过 HWC 硬件合成器输出

6.2. OpenHarmony 图形架构

6.2.1. 核心特点

1. 后端统一渲染

  • 摒弃了 AOSP 的多窗口独立渲染架构
  • 采用业界领先的统一渲染架构
  • 通过遮挡剔除等算法优化 GPU 开销

2. 提供后端并行化渲染能力

  • 使用全新 2D 引擎 DDGR
  • 并接入 Vulkan
  • 在多线程渲染、多屏多窗口等场景重复发挥 GPU 算力

3. 脏区域渲染优化

  • Render(渲染后端并行化)
  • Dirty Regions(脏区域):只渲染变化的区域
  • Draw OP 合并:合并绘制操作
  • DDGR Render Engine:高性能 2D 渲染引擎
  • 脏区域渲染优化:大幅减少不必要的渲染

6.2.2. 架构对比

cke_6335404.png

6.2.3. 图形性能对比

对比项

AOSP

OpenHarmony

渲染架构

应用独立渲染

后端统一渲染

跨应用动效

不支持

支持

窗口层数限制

HWC限制(通常≤6层)

无限制

重复渲染问题

存在遮挡重复渲染

遮挡剔除算法优化

多屏多窗口

性能受限

GPU算力充分发挥

脏区域渲染

支持

优化的脏区域渲染

渲染引擎

Skia

DDGR + Vulkan

适用场景

手机、平板

手机、平板、PC、车机、投屏

7. 一次开发多端部署

7.1. 核心能力概述

HarmonyOS 的核心特有能力"一次开发,多端部署"。是通过统一的开发框架和能力,实现代码的最大程度复用。

7.2. 工程级能力

1. 多设备工程管理

支持在同一工程中管理多个设备的代码和资源:

  • 共享公共代码和资源
  • 按设备类型组织特定代码
  • 统一的构建和打包流程

2. 多目标构建

一次构建可以生成多个设备的安装包:

  • 手机 HAP
  • 平板 HAP
  • 手表 HAP
  • 车机 HAP

3. 一体化打包

将多个设备的安装包打包成一个 APP 包,简化分发流程。

7.3. 功能级能力

1. 同一特性多端运行

逻辑与UI解耦:

业务逻辑代码可以在不同设备上运行,UI 根据设备特性自适应。

跨端接口差异化屏蔽:

框架层屏蔽不同设备的接口差异,开发者使用统一的 API。

2. 一套界面多端适配

自适应布局:

  • Row、Column 等布局组件自动适配不同屏幕尺寸
  • 栅格系统支持响应式布局

响应式布局:

  • GridRow、GridCol 实现断点布局
  • 根据屏幕宽度自动调整布局结构

交互事件归一:

  • 统一的事件处理机制
  • 自动识别触摸、鼠标、键盘等输入方式

7.4. 界面级能力

7.4.1. 自适应布局

组件根据容器大小自动调整尺寸和位置:

/**
 * 自适应布局示例
 * 组件会根据容器尺寸自动调整布局
 */
@Entry
@Component
struct AdaptiveLayout {
  build() {
    Column() {
      // 使用百分比布局实现自适应
      Row() {
        Text('左侧').width('30%')
        Text('右侧').width('70%')
      }.width('100%')
    }
  }
}

7.4.2. 响应式布局

根据断点(breakpoint)切换不同的布局结构:

/**
 * 响应式布局示例
 * 根据屏幕宽度显示不同的布局结构
 */
@Entry
@Component
struct ResponsiveLayout {
  @State currentBreakpoint: string = 'sm'
  
  build() {
    GridRow({
      breakpoints: {
        value: ['sm', 'md', 'lg'],
        reference: BreakpointsReference.WindowSize
      }
    }) {
      GridCol({ span: { sm: 12, md: 6, lg: 4 } }) {
        Text('内容')
      }
    }
  }
}

7.4.3. 交互事件归一

统一处理不同设备的输入事件:

/**
 * 交互事件归一示例
 * 同一个事件处理函数支持触摸、鼠标、键盘等多种输入
 */
@Entry
@Component
struct EventUnification {
  /**
   * 处理点击事件
   * 自动支持触摸和鼠标输入
   */
  handleClick() {
    console.log('点击事件 - 支持触摸和鼠标')
  }
  
  build() {
    Button('点击我')
      .onClick(() => this.handleClick())
  }
}

7.5. 一次开发多端部署流程

cke_21206.png

8. 超级终端抽象模型

8.1. 基本概念

HarmonyOS 的核心理念是以人为中心,将用户周边的多个智能设备抽象成一个"超级终端",通过分布式软总线进行统一调度和管理。

8.2. 用户体验层面

如同使用一个超级设备:

用户感受不到设备的边界,所有设备的能力都可以随时调用:

  • 手机拍照可以使用智能摄像头
  • 手机播放视频可以投屏到电视
  • 平板输入可以使用蓝牙键盘
  • 手表查看导航可以显示在车机屏幕

8.3. 应用开发者层面

可基于抽象的超级终端开发服务:

开发者无需关心具体的设备类型,只需要:

  • 声明需要的能力(如摄像头、屏幕、GPS)
  • 调用分布式 API
  • 系统自动选择最佳的设备提供能力

8.4. 架构层级

8.4.1. 分布式 API 层

提供跨设备调用的统一接口:

  • 虚拟资源A、B、C
  • 虚拟外设A、B、C

8.4.2. 安全与隐私层

确保设备间通信的安全性:

  • 设备认证
  • 数据加密
  • 权限管理

8.4.3. 分布式任务调度

智能分配任务到最佳设备:

  • 计算能力评估
  • 电量状态评估
  • 网络状况评估

8.4.4. 分布式数据管理

实现数据的跨设备同步:

  • 数据一致性保证
  • 冲突解决机制
  • 增量同步

8.4.5. 分布式软总线

底层的设备连接和通信基础设施:

  • 设备发现
  • 连接建立
  • 数据传输

8.5. 超级终端架构图

0900086000300134184.20201216095126.86523331460016843504112994983392.png

如果以上文章内容对您有帮助,欢迎点赞👍 收藏⭐️ +关注❤️!也欢迎继续提问交流💬!

原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2020-08-22

  • 博文量
    13
  • 访问量
    1042