?

基于HarmonyOS分布式數據服務的探究

2023-08-26 03:08龍軍何暢趙冬冬
電腦知識與技術 2023年19期
關鍵詞:鴻蒙數據服務分布式

龍軍 何暢 趙冬冬

關鍵詞:HarmonyOS;鴻蒙;分布式;數據服務;多端同步

HarmonyOS是華為公司推出的全場景智慧生活方式的分布式操作系統。隨著基于鴻蒙的智能化產品越來越多,用戶擁有設備的數量和品種也不斷增多,對全場景多設備的生活方式體驗也逐漸深入。通過相互感知,鴻蒙將相關終端設備進行能力整合成一個超級終端(One Super Device) ,實現極速連接、多端協同和資源共享,提供自然流暢的分布式全場景體驗。

1 分布式系統

分布式系統是隨著計算機網絡技術的發展而產生,通過多臺計算機組成的網絡以協作方式共同完成單個計算機所無法完成的任務。美國學者Tanenbaum 對分布式系統的定義:分布式系統是若干獨立計算機的集合,這些計算機對于用戶來說就像是單個相關系統。此定義包含兩個方面的內容,第一個方面是關于硬件的:機器本身是獨立的。第二個方面是關于軟件的:對用戶來說他們就像在與單個系統打交道[1]。

通常將分布式系統劃分為分布式硬件架構、分布式操作系統、分布式數據庫、分布式程序設計和分布式應用等5個層次。分布式操作系統包括負責管理分布式處理系統資源和控制分布式程序運行的分布式文件系統。分布式數據庫是將網絡上分散的多個數據單元連起來組成一個邏輯上統一的數據庫。

2 HarmonyOS 分布式設計原則

HarmonyOS支持同一賬號的多設備相互同步數據,使用戶在多端設備上有統一的用戶體驗。為構建起優秀的分布式體驗,應遵循以下設計原則:

體驗增值:跨設備交互能提供諸如更好的感官體驗和交互效率等體驗提升。

無縫流暢:設備間流轉無縫、協同流暢,就像使用一個設備。

清晰明確:跨設備交互有清晰明確指引,用戶可快速熟悉使用。

易于理解:跨設備交互易于理解和記憶,用戶能長期持續使用。

用戶可控:跨設備交互時用戶能隨時切換設備或其他可用的跨設備交互模式。

沉浸無干擾:可根據設備屬性在不同設備上分配信息,最大化提供沉浸無干擾體驗。

3 HarmonyOS 的分布式數據服務

HarmonyOS通過鍵值對(Key-Value) 降低數據庫版本兼容及數據同步的復雜度,對外提供KV類型的訪問接口。鴻蒙以本地事務為單位在設備間同步數據,一次本地事務的修改必須全部同步成功。由于移動設備不確保一直在線而且無中心,鴻蒙的分布式數據服務在某一設備完成數據的增、刪、改后,組網內設備可能不會實時讀取到本次數據更新,但會在某時間窗口后進行更新同步,使數據達到一致狀態,稱為最終一致性[3]。

該同步由底層通信組件發現、認證設備,再通知上層應用程序設備,收到消息后,兩設備間建立加密的數據傳輸通道,采用手動或自動方式同步數據。手動同步由應用程序調用sync接口并指定同步的設備列表和模式觸發,同步模式分PULL_ONLY(將遠端數據拉到本端)、PUSH_ONLY(將本端數據推送到遠端)和PUSH_PULL(同時將本端數據推送到遠端及遠端數據拉取到本端)三種。自動同步由分布式數據庫自動采用PUSH_PULL模式完成數據同步。

4 HarmonyOS 的分布式數據庫分類

HarmonyOS的分布式數據庫分單版本和設備協同兩類。單版本分布式數據庫(SingleKVStore) 是指數據以單個KV條目為單位在本地保存,每個Key最多只保存一個條目項[4],該條目項可采用諸如Json等格式化方式存儲多個數據項。應用在本地修改數據,然后按本地更新順序將最后修改的數據逐一同步到遠端設備。

設備協同分布式數據庫(DeviceKVStore) 建立在單版本之上,應用程序存入KV數據時在Key前加上本設備的DeviceID,實現設備產生數據的隔離,底層按設備維度管理數據,數據庫可按設備維度查詢分布式數據,但不能修改其他設備同步過來的數據。

5 HarmonyOS 分布式數據服務的運作機制

HarmonyOS通過服務組件初始化底層分布式數據庫的存儲組件、同步組件和通信適配層,進行服務內元數據、權限、加密、備份和恢復及多用戶的管理,并將數據存儲到存儲組件。存儲組件進行數據的訪問、縮減、事務、快照、數據庫加密、數據合并和沖突解決。同步組件連接存儲組件與通信組件,保持在線設備間數據庫數據的一致。用通信適配層將數據同步至遠端設備,遠端設備通過同步組件接收數據,并更新至本端存儲組件,通過服務接口提供給應用程序使用[5]。

通信適配層調用底層公共通信層的接口完成通信管道的創建、連接,接收、發送設備上下線消息,維護已連接和斷開設備列表的元數據。同步組件維護連接的設備列表,同步數據時根據這個列表,調用通信適配層的接口將數據封裝并發送給連接的設備。運作機制如圖1所示。

由于分布式數據庫是多設備在操作,HarmonyOS 采用基于提交時間戳、取時間戳較大的提交數據策略解決多設備同時修改某一數據的沖突場景。

6 HarmonyOS 分布式數據管理的關鍵JS API

HarmonyOS分布式數據服務主要實現用戶設備中應用程序數據內容的分布式同步,可采用Java、JS 或ArkTS三種API,本文采用JS API進行研究。

分布式數據管理為應用程序提供了不同設備間數據庫的分布式協同能力,應用程序通過調用相應接口將數據保存到分布式數據庫中,并進行數據的增加、刪除、修改、查詢、同步等操作,常用接口如表1 所示[6]。

7 HarmonyOS 分布式數據服務的應用實踐下面基于單版本分布式數據庫完成一個便箋本的設計制作。

1) 導入分布式數據和分布式設備的模塊。

2) 在config.json文件的module-reqPermissions 里聲明分布式數據同步DISTRIBUTED_DATASYNC 和獲得分布式設備信息GET_DISTRIBUTED_DEVICE_ INFO的權限。

3) 創建分布式數據庫管理器實例。

用包名和用戶信息創建配置信息。包名bundle? Name必須與使用的工程一致,用戶信息由userId(用戶ID) 和userType(用戶類型)構成,userType設置為0 或SAME_USER_ID,表示使用同一賬號登錄不同設備的用戶:

4) 獲取/創建分布式數據庫。

聲明分布式數據庫的配置信息options,包括:cre? actreyIpftM為iss是in否g表加示密當;數ba據cku庫p文為件是不否存備在份時;a是ut否oS創yn建c為;e是n?否自動同步,若設為否需調用sync接口,通常關閉自動同步功能;kvStoreType 數據庫類型,DEVICE_ COLLABORATION 或0 為多設備協同數據庫,SINGLE_VERSION或1為單版本數據庫;securityLevel 安全級別,為NO_LEVEL、S0~S4,值從0~6,等級越高,限制越多:

5) 訂閱分布式數據變化。

用on(event,type,observer)方法進行訂閱,參數event是訂閱的事件名固定為dataChange,表示數據變更事件;type是訂閱的類型,值分別是SUBSCRIBE_ TYPE_LOCAL 或0 為訂閱本地數據變更、SUBSCRIBE_TYPE_REMOTE或1為訂閱遠端數據變更、SUBSCRIBE_TYPE_ALL或2為訂閱遠端和本地數據變更;參數observer是回調函數:

6) 構造要分布式數據庫的鍵值對,并將KV數據更新到分布式數據庫。

7) 查詢分布式數據庫數據。查詢指定的數據

8) 選擇同一組網環境下的設備以及同步模式,同步數據到其他設備。

通過createDeviceManager()創建分布式設備管理實例,在回調函數用getTrustedDeviceListSync()同步獲取所有可信設備列表,設備信息DeviceInfo包括:deviceId 設備唯一標識、deviceName設備名稱、deviceType設備類型、networkId設備網絡標識、range發現設備的距離:

在選擇設備對話框中判斷是否選擇同步的設備,若選中則用sync(需同步的設備列表,同步模式,延時時間)方法同步數據。同步模式如前所述:

上述是HarmonyOS基于JS單版本分布式數據庫應用的核心設計。應用程序的主要運行結果如圖2 所示。

8 結束語

本文對鴻蒙操作系統的分布式數據服務、運作機制和JS API進行了研究與初步應用,建立了一個簡單的單版本分布式數據庫應用模型,也為設備協同分布式數據庫的應用開發提供了參考。

隨著國民對國產技術和產品的認可度提升,鴻蒙操作系統的不斷發展與優化,相關的生態建設逐步完善,基于HarmonyOS的手機、平板、智能穿戴、智慧屏、車機等設備有著更廣闊的市場和發展空間。鴻蒙借助分布式設計形成1+8+N的全場景業務能力,提升了消費者在智慧生活、智慧家庭、智慧辦公等場景下的體驗,構建起牢固的終端消費者生態系統。站在鴻蒙應用開發的角度上,分布式技術整合多終端形成的超級終端使開發者可以忽略硬件的差異,將精力集中到業務應用,開發出更高體驗的應用。在鴻蒙發展的過程中,需要更多的開發者加入,不斷探索與實踐,共同促進HarmonyOS這一具有獨立知識產權的國產操作系統的進步與壯大。

猜你喜歡
鴻蒙數據服務分布式
地理空間大數據服務自然資源調查監測的方向分析
鴻蒙:打破安卓壟斷 所有權歸屬國家
鴻蒙來了
華為一大批鴻蒙商標等待審查
如何運用稅收大數據服務供給側結構性改革
基于頻繁子圖挖掘的數據服務Mashup推薦
基于DDS的分布式三維協同仿真研究
西門子 分布式I/O Simatic ET 200AL
一種基于數據服務超鏈進行情景數據集成的方法*
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合