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 项目群工作委员会观点) 刘丽红 随着社会的进步与发展,科技手段的推陈出新,餐饮行业也在寻求新的突破与变革,手机扫描二维码点餐系统已经成为餐饮行 ...
 
随机推荐
- 【深度学习 01】线性回归+PyTorch实现
			
1. 线性回归 1.1 线性模型 当输入包含d个特征,预测结果表示为: 记x为样本的特征向量,w为权重向量,上式可表示为: 对于含有n个样本的数据集,可用X来表示n个样本的特征集合,其中行代表样本,列 ...
 - leedcode算法
			
1.LeetCode - 合并两个链表 2. 3. 链表是否有环 https://jingyan.baidu.com/article/066074d69afb8d83c31cb068.ht ...
 - 什么是root帐户?
			
root帐户就像一个系统管理员帐户,允许你完全控制系统.你可以在此处创建和维护用户帐户,为每个帐户分配不同的权限.每次安装Linux时都是默认帐户.
 - 实践中如何优化 MySQL ?
			
最好是按照以下顺序优化: 1.SQL 语句及索引的优化 2.数据库表结构的优化 3.系统配置的优化 4.硬件的优化 详细可以查看 阿里 P8 架构师谈:MySQL 慢查询优化.索引优化.以及表等优化
 - MySQL碎片整理小节--实例演示
			
MYSQL之磁盘碎片整理 清澈,细流涓涓的爱 数据库引擎以InnoDB为主 1.磁盘碎片是什么  InnoDB表的数据存储在页中,每个页可以存放多条记录,这些记录以树形结构组织,这棵树称为B+树. ...
 - 编写大型项目web页面 从写web登陆页面开始
			
web页面搭建需要准备什么工具 首先我们会和设计师沟通 我们需要一些检验设计的工具 ps 自动裁图 自动测量工具 (我这里安利一下一个工具 我用的cutterman) sketch 可以使用阿里的工具 ...
 - 翻译:HTML5与HTML4的区别
			
本文选译自:W3C Working Group Note: HTML5 Differences from HTML4. 解释一下W3C Working Group Note,作为"工作组笔记 ...
 - 原生JavaScript实现AJAX、JSONP
			
相信大多数前端开发者在需要与后端进行数据交互时,为了方便快捷,都会选择JQuery中封装的AJAX方法,但是有些时候,我们只需要JQuery的AJAX请求方法,而其他的功能用到的很少,这显然是没必要的 ...
 - 微信小程序安全浅析
			
引言 近期微信小程序重磅发布,在互联网界掀起不小的波澜,已有许多公司发布了自己的小程序,涉及不同的行业领域.大家在体验小程序用完即走便利的同时,是否对小程序的安全性还存有疑虑.白泽日前对微信小程序进行 ...
 - notification(浏览器通知)
			
一.notification简介 Web Notifications是HTML5 的一个特性,目前我知道的有谷歌浏览器和windows edge对它进行了支持,用于向用户配置和显示桌面通知. 二.no ...