分布式文件服务能够为用户设备中的应用程序提供多设备之间的文件共享能力,支持相同帐号下同一应用文件的跨设备访问,应用程序可以不感知文件所在的存储设备,能够在多个设备之间无缝获取文件。
基本概念
- 分布式文件 分布式文件是指依赖于分布式文件系统,分散存储在多个用户设备上的文件,应用间的分布式文件目录互相隔离,不同应用的文件不能互相访问。
- 文件元数据 文件元数据是用于描述文件特征的数据,包含文件名,文件大小,创建、访问、修改时间等信息。
运作机制
分布式文件服务采用无中心节点的设计,每个设备都存储一份全量的文件元数据和本设备上产生的分布式文件,元数据在多台设备间互相同步,当应用需要访问分布式文件时,分布式文件服务首先查询本设备上的文件元数据,获取文件所在的存储设备,然后对存储设备上的分布式文件服务发起文件访问请求,将文件内容读取到本地。
图1 分布式文件服务运作示意图
约束与限制
- 应用程序如需使用分布式文件服务完整功能,需要申请 ohos.permission.DISTRIBUTED_DATASYNC 权限。
- 多个设备需要打开蓝牙,连接同一 WLAN 局域网,登录相同华为帐号才能实现文件的分布式共享。
- 存在多设备并发写的场景下,为了保证文件独享,开发者需要对文件进行加锁保护。
- 应用访问分布式文件时,如果文件所在设备离线,文件不能访问。
- 非持锁情况下,并发写冲突时,后一次会覆盖前一次。
- 网络情况差时,访问存储在远端的分布式文件时,可能会长时间不返回或返回失败,应用需要考虑这种场景的处理。
- 当两台设备有同名文件时,同步元数据时会产生冲突,分布式文件服务根据时间戳将文件按创建的先后顺序重命名,为避免此场景,建议应用在文件名上做设备区分,例如,deviceID+时间戳。