W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
分布式數(shù)據(jù)服務(wù)(Distributed Data Service,DDS) 為應(yīng)用程序提供不同設(shè)備間數(shù)據(jù)庫數(shù)據(jù)分布式的能力。通過調(diào)用分布式數(shù)據(jù)接口,應(yīng)用程序?qū)?shù)據(jù)保存到分布式數(shù)據(jù)庫中。通過結(jié)合帳號、應(yīng)用和數(shù)據(jù)庫三元組,分布式數(shù)據(jù)服務(wù)對屬于不同的應(yīng)用的數(shù)據(jù)進(jìn)行隔離,保證不同應(yīng)用之間的數(shù)據(jù)不能通過分布式數(shù)據(jù)服務(wù)互相訪問。在通過可信認(rèn)證的設(shè)備間,分布式數(shù)據(jù)服務(wù)支持應(yīng)用數(shù)據(jù)相互同步,為用戶提供在多種終端設(shè)備上一致的數(shù)據(jù)訪問體驗。
“KV數(shù)據(jù)模型”是“Key-Value 數(shù)據(jù)模型”的簡稱,“Key-Value”即“鍵-值”。它是一種 NoSQL 類型數(shù)據(jù)庫,其數(shù)據(jù)以鍵值對的形式進(jìn)行組織、索引和存儲。
KV 數(shù)據(jù)模型適合不涉及過多數(shù)據(jù)關(guān)系和業(yè)務(wù)關(guān)系的業(yè)務(wù)數(shù)據(jù)存儲,比 SQL 數(shù)據(jù)庫存儲擁有更好的讀寫性能,同時因在分布式場景中降低了數(shù)據(jù)庫版本兼容和數(shù)據(jù)同步過程中沖突解決的復(fù)雜度而被廣泛使用。分布式數(shù)據(jù)庫也是基于 KV 數(shù)據(jù)模型,對外提供 KV 類型的訪問接口。
分布式數(shù)據(jù)庫事務(wù)支持本地事務(wù)(和傳統(tǒng)數(shù)據(jù)庫的事務(wù)概念一致)和同步事務(wù),同步事務(wù)是指在設(shè)備之間同步數(shù)據(jù)時,是以本地事務(wù)為單位進(jìn)行同步,一次本地事務(wù)的修改要么都同步成功,要么都同步失敗。
在分布式場景中一般會涉及多個設(shè)備,組網(wǎng)內(nèi)設(shè)備之間看到的數(shù)據(jù)是否一致稱為分布式數(shù)據(jù)庫的一致性。分布式數(shù)據(jù)庫一致性可以分為強(qiáng)一致性、弱一致性和最終一致性。
強(qiáng)一致性對分布式數(shù)據(jù)的管理要求非常高,在服務(wù)器的分布式場景可能會遇到。因為移動終端設(shè)備的不常在線、以及無中心的特性,分布式數(shù)據(jù)服務(wù)不支持強(qiáng)一致,只支持最終一致性。
底層通信組件完成設(shè)備發(fā)現(xiàn)和認(rèn)證,會通知上層應(yīng)用程序(包括分布式數(shù)據(jù)服務(wù))設(shè)備上線。收到設(shè)備上線的消息后分布式數(shù)據(jù)服務(wù)可以在兩個設(shè)備之間建立加密的數(shù)據(jù)傳輸通道,利用該通道在兩個設(shè)備之間進(jìn)行數(shù)據(jù)同步。
分布式數(shù)據(jù)服務(wù)提供了兩種同步模式:手動**同步和自動同步模式。手動同步**模式完全由應(yīng)用程序調(diào)用接口來觸發(fā),并且支持指定同步的設(shè)備列表和同步模式(PULL、PUSH和PULL_PUSH三種同步模式)。自動同步模式由分布式數(shù)據(jù)庫來完成數(shù)據(jù)同步(同步時機(jī)包括設(shè)備上線、應(yīng)用程序修改數(shù)據(jù)等),業(yè)務(wù)不感知同步操作。
單版本是指數(shù)據(jù)在本地保存是以單個KV條目為單位的方式保存,對每個Key最多只保存一個條目項,當(dāng)數(shù)據(jù)在本地被用戶修改時,不管它是否已經(jīng)被同步出去,均直接在這個條目上進(jìn)行修改。同步也以此為基礎(chǔ),按照它在本地被寫入或更改的順序?qū)?dāng)前最新一次修改逐條同步至遠(yuǎn)端設(shè)備。
設(shè)備協(xié)同分布式數(shù)據(jù)庫建立在單版本分布式數(shù)據(jù)庫之上,對應(yīng)用程序存入的 KV 數(shù)據(jù)中的 Key 前面拼接了本設(shè)備的 DeviceID 標(biāo)識符,這樣能保證每個設(shè)備產(chǎn)生的數(shù)據(jù)嚴(yán)格隔離,底層按照設(shè)備的維度管理這些數(shù)據(jù),設(shè)備協(xié)同分布式數(shù)據(jù)庫支持以設(shè)備的維度查詢分布式數(shù)據(jù),但是不支持修改遠(yuǎn)端設(shè)備同步過來的數(shù)據(jù)。
分布式數(shù)據(jù)庫多設(shè)備提交沖突場景,在給提交沖突做合并的過程中,如果多個設(shè)備同時修改了同一數(shù)據(jù),則稱這種場景為數(shù)據(jù)沖突。數(shù)據(jù)沖突采用默認(rèn)沖突解決策略,基于提交時間戳,取時間戳較大的提交數(shù)據(jù),當(dāng)前不支持定制沖突解決策略。
單版本數(shù)據(jù)庫支持在創(chuàng)建和打開數(shù)據(jù)庫時指定 Schema,數(shù)據(jù)庫根據(jù) Schema 定義感知 KV 記錄的 Value 格式,以實現(xiàn)對 Value 值結(jié)構(gòu)的檢查,并基于 Value 中的字段實現(xiàn)索引建立和支持謂詞查詢。
提供分布式數(shù)據(jù)庫備份能力,業(yè)務(wù)通過設(shè)置 backup 屬性為 true,可以觸發(fā)分布式數(shù)據(jù)服務(wù)每日備份。當(dāng)分布式數(shù)據(jù)庫發(fā)生損壞,分布式數(shù)據(jù)服務(wù)會刪除損壞數(shù)據(jù)庫,并且從備份數(shù)據(jù)庫中恢復(fù)上次備份的數(shù)據(jù)。如果不存在備份數(shù)據(jù)庫,則創(chuàng)建一個新的數(shù)據(jù)庫。同時支持加密數(shù)據(jù)庫的備份能力。
分布式數(shù)據(jù)服務(wù)支撐 HarmonyOS 系統(tǒng)上應(yīng)用程序數(shù)據(jù)庫數(shù)據(jù)分布式管理,支持?jǐn)?shù)據(jù)在相同帳號的多端設(shè)備之間相互同步,為用戶在多端設(shè)備上提供一致的用戶體驗,分布式數(shù)據(jù)服務(wù)包含五部分:
分布式數(shù)據(jù)服務(wù)提供專門的數(shù)據(jù)庫創(chuàng)建、數(shù)據(jù)訪問、數(shù)據(jù)訂閱等接口給應(yīng)用程序調(diào)用,接口支持 KV 數(shù)據(jù)模型,支持常用的數(shù)據(jù)類型,同時確保接口的兼容性、易用性和可發(fā)布性。
服務(wù)組件負(fù)責(zé)服務(wù)內(nèi)元數(shù)據(jù)管理、權(quán)限管理、加密管理、備份和恢復(fù)管理以及多用戶管理等、同時負(fù)責(zé)初始化底層分布式 DB 的存儲組件、同步組件和通信適配層。
存儲組件負(fù)責(zé)數(shù)據(jù)的訪問、數(shù)據(jù)的縮減、事務(wù)、快照、數(shù)據(jù)庫加密,以及數(shù)據(jù)合并和沖突解決等特性。
同步組件連結(jié)了存儲組件與通信組件,其目標(biāo)是保持在線設(shè)備間的數(shù)據(jù)庫數(shù)據(jù)一致性,包括將本地產(chǎn)生的未同步數(shù)據(jù)同步給其他設(shè)備,接收來自其他設(shè)備發(fā)送過來的數(shù)據(jù),并合并到本地設(shè)備中。
通信適配層負(fù)責(zé)調(diào)用底層公共通信層的接口完成通信管道的創(chuàng)建、連接,接收設(shè)備上下線消息,維護(hù)已連接和斷開設(shè)備列表的元數(shù)據(jù),同時將設(shè)備上下線信息發(fā)送給上層同步組件,同步組件維護(hù)連接的設(shè)備列表,同步數(shù)據(jù)時根據(jù)該列表,調(diào)用通信適配層的接口將數(shù)據(jù)封裝并發(fā)送給連接的設(shè)備。
應(yīng)用程序通過調(diào)用分布式數(shù)據(jù)服務(wù)接口實現(xiàn)分布式數(shù)據(jù)庫創(chuàng)建、訪問、訂閱功能,服務(wù)接口通過操作服務(wù)組件提供的能力,將數(shù)據(jù)存儲至存儲組件,存儲組件調(diào)用同步組件實現(xiàn)將數(shù)據(jù)同步,同步組件使用通信適配層將數(shù)據(jù)同步至遠(yuǎn)端設(shè)備,遠(yuǎn)端設(shè)備通過同步組件接收數(shù)據(jù),并更新至本端存儲組件,通過服務(wù)接口提供給應(yīng)用程序使用。
圖1 數(shù)據(jù)分布式運(yùn)作示意圖
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: