HarmonyOS之数据管理·分布式文件服务的应用
生活随笔
收集整理的這篇文章主要介紹了
HarmonyOS之数据管理·分布式文件服务的应用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、簡介
① 基本概念
- 分布式文件服務(wù)能夠為用戶設(shè)備中的應(yīng)用程序提供多設(shè)備之間的文件共享能力,支持相同帳號下同一應(yīng)用文件的跨設(shè)備訪問,應(yīng)用程序可以不感知文件所在的存儲設(shè)備,能夠在多個設(shè)備之間無縫獲取文件。
- 分布式文件是指依賴于分布式文件系統(tǒng),分散存儲在多個用戶設(shè)備上的文件,應(yīng)用間的分布式文件目錄互相隔離,不同應(yīng)用的文件不能互相訪問。
- 文件元數(shù)據(jù)是用于描述文件特征的數(shù)據(jù),包含文件名,文件大小,創(chuàng)建、訪問、修改時間等信息。
② 運作機(jī)制
- 分布式文件服務(wù)采用無中心節(jié)點的設(shè)計,每個設(shè)備都存儲一份全量的文件元數(shù)據(jù)和本設(shè)備上產(chǎn)生的分布式文件,元數(shù)據(jù)在多臺設(shè)備間互相同步,當(dāng)應(yīng)用需要訪問分布式文件時,分布式文件服務(wù)首先查詢本設(shè)備上的文件元數(shù)據(jù),獲取文件所在的存儲設(shè)備,然后對存儲設(shè)備上的分布式文件服務(wù)發(fā)起文件訪問請求,將文件內(nèi)容讀取到本地。
- 分布式文件服務(wù)運作如下圖所示:
③ 權(quán)限與限制
- 應(yīng)用程序如需使用分布式文件服務(wù)完整功能,需要申請 ohos.permission.DISTRIBUTED_DATASYNC 權(quán)限。
- 多個設(shè)備需要登錄相同華為帳號,然后打開多個設(shè)備的藍(lán)牙,或?qū)⒍鄠€設(shè)備接入同一 WLAN 局域網(wǎng),才能實現(xiàn)文件的分布式共享。
- 當(dāng)多臺設(shè)備對同一文件并發(fā)寫操作時有數(shù)據(jù)沖突,后寫會覆蓋先寫,應(yīng)用需要主動保證時序控制并發(fā)流程。
- 應(yīng)用訪問分布式文件時,如果文件所在設(shè)備離線,文件不能訪問。
- 網(wǎng)絡(luò)情況差時,訪問存儲在遠(yuǎn)端的分布式文件時,可能會長時間不返回或返回失敗,應(yīng)用需要考慮這種場景的處理。
- 當(dāng)兩臺設(shè)備有同名文件時,同步元數(shù)據(jù)時會產(chǎn)生沖突,沖突的解決策略:
-
- 本地跟遠(yuǎn)端沖突 ,遠(yuǎn)端文件被重命名,看到的同名文件是本地同名文件,遠(yuǎn)端文件被重命名;
-
- 遠(yuǎn)端多個設(shè)備沖突,以接入本設(shè)備 ID 為順序,顯示設(shè)備 ID 小的同名文件,其他文件被依次重命名;
-
- 如果組網(wǎng)場景,目錄樹下已經(jīng)有遠(yuǎn)端文件,創(chuàng)建同名文件,提示文件已存在;
-
- 沖突文件顯示 _conflict_dev 后依次加 id;
-
- 同名目錄之間僅融合不存在沖突,文件和遠(yuǎn)端目錄同名沖突,遠(yuǎn)端目錄后綴加 _remote_directory。
④ 應(yīng)用場景
- 應(yīng)用可以通過分布式文件服務(wù)實現(xiàn)多個設(shè)備間的文件共享,設(shè)備1上的應(yīng)用 A 創(chuàng)建了分布式文件 a,設(shè)備2上的應(yīng)用 A 能夠通過分布式文件服務(wù)讀寫設(shè)備1上的文件 a。
二、分布式文件服務(wù)的 API
- 分布式文件兼容 POSIX 文件操作接口,應(yīng)用使用 Context.getDistributedDir() 接口獲取目錄后,可以直接使用 libc 或 JDK 訪問分布式文件。
- 分布式文件服務(wù) API 接口功能:
| Context.getDistributedDir() | 獲取文件的分布式目錄 |
三、使用流程
- 應(yīng)用可以通過 Context.getDistributedDir() 接口獲取屬于自己的分布式目錄,然后通過 libc 或 JDK 接口,在該目錄下創(chuàng)建、刪除、讀寫文件或目錄。
- 設(shè)備1上的應(yīng)用 A 創(chuàng)建文件 hello.txt,并寫入內(nèi)容"Hello World"。
- 設(shè)備 2 上的應(yīng)用 A 通過 Context.getDistributedDir() 接口獲取分布式目錄。
- 設(shè)備 2 上的應(yīng)用 A 讀取文件 hello.txt。
總結(jié)
以上是生活随笔為你收集整理的HarmonyOS之数据管理·分布式文件服务的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HarmonyOS之数据管理·分布式数据
- 下一篇: HarmonyOS之数据管理·融合搜索的