OpenHarmony 3.1 Beta版本关键特性解析——分布式DeviceProfile
(以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点)

OpenAtom OpenHarmony(以下简称“OpenHarmony”)作为分布式操作系统,让多个设备之间能够相互感知,进而整合成一个超级终端。从而实现设备与设备之间取长补短、相互帮助,为用户提供自然流畅的分布式体验。
那么超级终端中,设备的能力和状态如何管理?设备之间如何进行信息协同?要回答这些问题,就不得不提我们本期的主角——DeviceProfile。
一、什么是DeviceProfile?
超级终端中的设备之间如何能实现取长补短、相互帮助?首先,就必须知道每个设备的能力,以及设备是否在线。对此,OpenHarmony 提出了“设备画像”,也就是通过 DeviceProfile 来记录设备的能力和状态等信息。
DeviceProfile 是设备硬件能力和系统软件特征的管理器,记录的典型设备信息有设备类型、设备名称、存储容量、是否折叠屏、有无屏幕、分辨率、设备安全等级、设备 OS 类型、OS 版本号等。
(备注:DeviceProfile 支持分布式部署在多个设备上,所以 DeviceProfile 也称为分布式 DeviceProfile)
二、DeviceProfile的组成结构
接下来,我们来看看 DeviceProfile 的组成结构。
图1 DeviceProfile的组成结构
如图 1 所示, DeviceProfile 主要包含以下模块:
ㆍ 数据管理:提供设备信息的插入、删除、查询、同步等数据管理功能;
ㆍ 订阅管理:订阅和取消订阅远端设备的同步完成事件和数据变更事件;
ㆍ 安全管理:管控本地设备 DeviceProfile 的访问权限,保障数据在可信范围内获取。
三、DeviceProfile的典型业务流程
分布式 DeviceProfile 基于分布式软总线、分布式数据管理、分布式 Profile 等技术特性,构建统一的设备信息管理机制。支持对设备信息的插入、删除、查询、跨设备同步、同步完成及数据变更事件监听等操作。
图 2 展示了两个设备的分布式 DeviceProfile 及其内部业务流程。

在介绍业务流程之前,先让我们来认识一下图 2 中涉及到的几个模块。
ㆍ DP Client 和 CS(Content Sensor)都是 DeviceProfile 一部分。DP Client 是 DeviceProfile 的客户端,其他服务可以通过 DP Client 来调用 DeviceProfile 的接口进行数据同步、数据变更等。CS 负责采集本设备的设备信息;
ㆍ HiChain:设备互信认证服务,管理设备的可信群组;
ㆍ 分布式数据管理服务:DeviceProfile 通过分布式数据管理服务插入、更新、查询、删除及同步设备信息。
接下来,我们就来详细介绍分布式 DeviceProfile 的典型业务流程。
1. 插入/删除本地设备信息
CS 模块定期探测本地设备的能力信息。当设备能力发生变化时,CS 发送给本地 DeviceProfile,本地 DeviceProfile 再通过分布式数据管理服务插入或更新设备信息。
当设备的某项能力很久未使用,本地 DeviceProfile 会通过分布式数据管理服务删除设备信息。
设备信息插入的内部流程图如图 3 所示。本地 DeviceProfile 通过 PutDeviceProfile 接口,请求写入一条设备信息记录。如果数据库已经初始化完成,DeviceProfileStorageManager 会直接调用 OnLineSyncTable 的 PutDeviceProfile 写入数据库。如果数据库经初始化未完成,则先将数据写入临时缓存,等初始化完成后再写入数据库,并清理缓存。

2. 跨设备同步设备信息
跨设备同步设备信息分为两种场景:
(1)设备上线时自动触发同步
如图 2,当 Device B 上线时,Device A 的 DeviceProfile 会从分布式软总线收到上线通知。DeviceProfile 的安全管理模块通过与 HiChain 交互,获知 Device B 在可信群组内。此时,自动触发同步,Device A 将自己的设备信息推送给 Device B 实现同步。同样的,Device A 上线时,Device B 也会收到上线通知,触发 Device B 主动推送自己的设备信息给 Device A 实现同步。
(2)通过 DP Client 调用接口触发同步
系统服务也可以通过 DP Client 调用 SyncDeviceProfile 接口,触发两个设备的分布式数据库的数据同步。
跨设备同步设备信息的内部流程如图 4 所示。设备 A 的 DeviceProfile 通过 SyncDeviceProfile 接口发起同步请求,再通过 CheckTrustGroup 接口获取本设备(即设备 A)和需要同步设备(即设备 B)的可信群组信息。如果两个设备的 GroupType 类型为 1(同账号组网)或者 256(点对点无账号组网),并且 Visibility(可见性)为 public,则说明两个设备之间可信。设备 A 将自己的设备信息推送给设备 B。

3. 查询设备信息
跨设备同步设备信息之后,本地设备上除了自己设备的信息,还有远端设备的信息。因而,在本地设备上就可以查询本地和远端设备信息,DeviceProfile 通过 deviceid 来判断是否为远端设备。DeviceProfile 提供的查询接口为 GetDeviceProfile 接口,具体查询流程如图 5 所示。

4. 订阅同步完成/数据变更事件
DeviceProfile 提供两类事件的订阅和取消订阅功能:
ㆍ 同步完成事件
跨设备同步设备信息时,支持订阅同步完成事件。比如 Device A 同步 Device B 的设备信息,如果 Device B 订阅了同步完成事件,则同步完成后 Device B 会收到 Device A 发送的同步完成通知。如果 Device B 取消订阅同步完成事件,则后续同步完成后不再收到通知。
DeviceProfile 提供的同步完成事件订阅接口为 SubscribeProfileEvent 接口,取消订阅的接口为 UnsubscribeProfileEvent 接口。
ㆍ 数据变更事件
DeviceProfile 支持远程订阅数据变更事件,比如,Device B 可以订阅 Device A 的数据变更事件。当 Device A 的数据发生变更,Device B 会收到数据变更通知。如果 Device B 取消订阅数据变更事件,则后续不再收到数据变更通知。
DeviceProfile 提供的数据变更事件订阅接口为 SubscribeProfileChange 接口,取消订阅的接口为 SubscribeProfileChange 接口。
同步完成事件、数据变更事件的订阅流程相似。图 6 展示了同步完成事件的订阅流程。

四、结束语
本期我们介绍了 DeviceProfile 的概念、组成和典型的业务流程。你是否已经了解了呢?
还想深入了解的开发者,可以参考以下链接查看 DeviceProfile 的实现代码和介绍:https://gitee.com/openharmony/device_profile_core

OpenHarmony 3.1 Beta版本关键特性解析——分布式DeviceProfile的更多相关文章
- OpenHarmony 3.1 Beta版本关键特性解析——HiStreamer框架大揭秘
(以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点) 陈国栋 数字多媒体技术在过去的数十年里得到了飞速的发展,多媒体终端设备如智能音箱.智能门锁.智能手表广泛应用于人们 ...
- OpenHarmony 3.1 Beta版本关键特性解析——HAP包安装实现剖析
(以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点) 石磊 随着社会的不断发展,人们逐渐注重更加高效.舒适.便捷.有趣的生活和工作体验. OpenAtom OpenHa ...
- OpenHarmony 3.1 Beta 版本关键特性解析——ArkUI canvas组件
(以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点) 江英杰 华为技术有限公司 canvas 是 ArkUI 开发框架里的画布组件,常用于自定义绘制图形.因为其轻量.灵活. ...
- OpenHarmony 3.1 Beta版本关键特性解析——探秘隐式查询
(以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点) 徐浩 隐式查询是 OpenAtom OpenHarmony(以下简称"OpenHarmony" ...
- OpenHarmony 3.1 Beta版本关键特性解析——OpenHarmony图形框架
(以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点) 李煜 华为技术有限公司 崔坤华为技术有限公司 众所周知,动画是系统和应用与用户交互的重要环节.动画效果的好坏会直接影响 ...
- OpenHarmony 3.1 Beta版本关键特性解析——ArkUI容器类API介绍
(以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点) 刘鑫 容器类,顾名思义就是存储的类,用于存储各种数据类型的元素,并具备一系列处理数据元素的方法.在 ArkUI 开发框 ...
- OpenHarmony3.1 Release版本关键特性解析——Enhanced SWAP内存管理
樊成阳 华为技术有限公司内核专家 陈杰 华为技术有限公司内核专家 OpenAtom OpenHarmony(以下简称"OpenHarmony")是面向全场景泛终端设备的操作系统,终 ...
- Unity 5.6 beta版本新特性
http://manew.com/thread-98549-1-1.html 最新发布的beta版改进了编辑器和2D功能,图形性能更佳,加入新的视频播放器,并添加了对Facebook Gameroom ...
- OpenHarmony 3.1 Beta 样例:使用分布式菜单创建点餐神器
(以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点) 刘丽红 随着社会的进步与发展,科技手段的推陈出新,餐饮行业也在寻求新的突破与变革,手机扫描二维码点餐系统已经成为餐饮行 ...
随机推荐
- MySQL面试题--常见的四种隔离级别
什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做. 事务的结束有 ...
- 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的.例如,对于如下语句: final StringBuilder a=new StringBuilder ...
- Dubbo 的整体架构设计有哪些分层?
接口服务层(Service):该层与业务逻辑相关,根据 provider 和 consumer 的 业务设计对应的接口和实现 配置层(Config):对外配置接口,以 ServiceConfig 和 ...
- 什么是 Mybatis?
1.Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时 只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动.创建连接.创建 statement 等繁杂的过程. ...
- String s = new String("xyz");创建了几个字符串对象?
两个对象,一个是静态区的"xyz",一个是用new创建在堆上的对象.
- Kafka消息是采用Pull模式,还是Push模式?
Kafka最初考虑的问题是,customer应该从brokes拉取消息还是brokers将消息推送到consumer,也就是pull还push.在这方面,Kafka遵循了一种大部分消息系统共同的传统的 ...
- 树莓派基本配置与Docker的安装
一.树莓派的安装 下载镜像 在 树莓派官网 https://www.raspberrypi.org/downloads/raspbian/ Win32 DiskImager,是一个把系统镜像写入SD卡 ...
- memcached 如何实现冗余机制?
不实现!我们对这个问题感到很惊讶.Memcached 应该是应用的缓存层.它的设 计本身就不带有任何冗余机制.如果一个 memcached 节点失去了所有数据,您 应该可以从数据源(比如数据库)再次获 ...
- Java 中 LinkedHashMap 和 PriorityQueue 的区别是 什么?
PriorityQueue 保证最高或者最低优先级的的元素总是在队列头部,但是 LinkedHashMap 维持的顺序是元素插入的顺序.当遍历一个 PriorityQueue 时,没有任何顺序保证,但 ...
- 爬虫-数据解析-xpath
xpath 解析 模块安装 : pip install lxml xpath的解析原理 实例化一个etree类型的对象,且将页面源码数据加载到该对象中 需要调用该对象的xpath方法结合着不同形式的x ...