OpenHarmony 3.1 Beta版本關鍵特性解析——分散式DeviceProfile

来源:https://www.cnblogs.com/openharmony/archive/2022/04/25/16189543.html
-Advertisement-
Play Games

超級終端中,設備的能力和狀態如何管理?設備之間如何進行信息協同?要回答這些問題,就不得不提我們本期的主角——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 分散式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/device_profile_core

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 一、問題概述: 由於網路和時間的限制,很多的 conda 源,如 清華源,中科大源都需要想辦法才能創建好虛擬環境(如本人發現的將清華源中的 https:// 改為 http:// 之後效果好很多),但這些源要麼在前幾次創建虛擬環境時奏效,時間長了 ...
  • 通配符 通配符必須全文匹配時才為真,使用LIKE關鍵字 |字元|示例|含義| | | |: | |_|"a_b"|任意一個字元"axb",其中x可以使任意字元,包括漢字| |%|"%a"|任意一個以a結尾的字元串| 正則表達式 字元串str中有任意一個子串能匹配正則表達式,則結果為真。使用REGEX ...
  • 大數據集群配置系列一,完全分散式搭建hadoop,zookeeper。簡單介紹jobhistory的配置流程。 ...
  • 分享嘉賓:張建 PingCAP TiDB優化器與執行引擎技術負責人 編輯整理:Druid中國用戶組第6次大數據MeetUp 出品平臺:DataFunTalk 導讀: 本次報告張老師主要從原理上帶大家深入瞭解 TiDB SQL 優化器中的關鍵模塊,比如應用一堆邏輯優化規則的邏輯優化部分,基於代價的物理 ...
  • 作者:程潤科、錢芬 視頻:錢芬 上一篇文章我們演示瞭如何快速實現 MySQL 高可用集群部署,以及部署集群的校驗和卸載方式。本文將演示如何對集群進行備份和恢復。 部署版本為 RadonDB MySQL Kubernetes 2.1.3。 環境準備 首先準備一套 Kubernetes 集群,過程略。然 ...
  • 前言 上篇文章《Android安卓進階技術分享之AGP工作原理》和大家分析了 AGP(Android Gradle Plugin) 做了哪些事,瞭解到 AGP 就是為打包這個過程服務的。 那麼,本篇文章就和大家聊一聊其中的 Transform,解決一下為什麼在 AGP 3.x.x 的版本可以通過反射 ...
  • Hello HarmonyOS進階系列(應用篇),聚焦HarmonyOS應用開發,連志安、唐佐林、徐禮文、李寧、李洋、夏德旺、潘凌越等7位技術大咖將傾情分享如何基於HarmonyOS系統成功開發應用,在智能家居、智慧辦公、智慧出行、運動健康、影音娛樂等領域賦能開發者。 ...
  • 4 月 25 日,“共建新技術,開拓新領域”OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)技術日在深圳順利召開。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...