作者:成翔
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 分布式 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 写入数据库。如果数据库经初始化未实现,则先将数据写入长期缓存,等初始化实现后再写入数据库,并清理缓存。
$$
图 3 设施信息插入流程图
$$
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。
$$
图 4 跨设施同步设施信息
$$
3. 查问设施信息
跨设施同步设施信息之后,本地设施上除了本人设施的信息,还有远端设施的信息。因此,在本地设施上就能够查问本地和远端设施信息,DeviceProfile 通过 deviceid 来判断是否为远端设施。DeviceProfile 提供的查问接口为 GetDeviceProfile 接口,具体查问流程如图 5 所示。
$$
图 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 展现了同步实现事件的订阅流程。
$$
图 6 同步实现事件的订阅流程
$$
结束语
本期咱们介绍了 DeviceProfile 的概念、组成和典型的业务流程。你是否曾经理解了呢?还想深刻理解的开发者,能够参考以下链接查看 DeviceProfile 的实现代码和介绍:
https://gitee.com/openharmony…