HarmonyOS之数据管理·分布式文件服务的应用
一、简介
① 基本概念
- 分布式文件服务能够为用户设备中的应用程序提供多设备之间的文件共享能力,支持相同帐号下同一应用文件的跨设备访问,应用程序可以不感知文件所在的存储设备,能够在多个设备之间无缝获取文件。
- 分布式文件是指依赖于分布式文件系统,分散存储在多个用户设备上的文件,应用间的分布式文件目录互相隔离,不同应用的文件不能互相访问。
- 文件元数据是用于描述文件特征的数据,包含文件名,文件大小,创建、访问、修改时间等信息。
② 运作机制
- 分布式文件服务采用无中心节点的设计,每个设备都存储一份全量的文件元数据和本设备上产生的分布式文件,元数据在多台设备间互相同步,当应用需要访问分布式文件时,分布式文件服务首先查询本设备上的文件元数据,获取文件所在的存储设备,然后对存储设备上的分布式文件服务发起文件访问请求,将文件内容读取到本地。
- 分布式文件服务运作如下图所示:
③ 权限与限制
- 应用程序如需使用分布式文件服务完整功能,需要申请 ohos.permission.DISTRIBUTED_DATASYNC 权限。
- 多个设备需要登录相同华为帐号,然后打开多个设备的蓝牙,或将多个设备接入同一 WLAN 局域网,才能实现文件的分布式共享。
- 当多台设备对同一文件并发写操作时有数据冲突,后写会覆盖先写,应用需要主动保证时序控制并发流程。
- 应用访问分布式文件时,如果文件所在设备离线,文件不能访问。
- 网络情况差时,访问存储在远端的分布式文件时,可能会长时间不返回或返回失败,应用需要考虑这种场景的处理。
- 当两台设备有同名文件时,同步元数据时会产生冲突,冲突的解决策略:
- 本地跟远端冲突 ,远端文件被重命名,看到的同名文件是本地同名文件,远端文件被重命名;
- 远端多个设备冲突,以接入本设备 ID 为顺序,显示设备 ID 小的同名文件,其他文件被依次重命名;
- 如果组网场景,目录树下已经有远端文件,创建同名文件,提示文件已存在;
- 冲突文件显示 _conflict_dev 后依次加 id;
- 同名目录之间仅融合不存在冲突,文件和远端目录同名冲突,远端目录后缀加 _remote_directory。
④ 应用场景
- 应用可以通过分布式文件服务实现多个设备间的文件共享,设备1上的应用 A 创建了分布式文件 a,设备2上的应用 A 能够通过分布式文件服务读写设备1上的文件 a。
二、分布式文件服务的 API
- 分布式文件兼容 POSIX 文件操作接口,应用使用 Context.getDistributedDir() 接口获取目录后,可以直接使用 libc 或 JDK 访问分布式文件。
- 分布式文件服务 API 接口功能:
接口名 | 描述 |
---|---|
Context.getDistributedDir() | 获取文件的分布式目录 |
三、使用流程
- 应用可以通过 Context.getDistributedDir() 接口获取属于自己的分布式目录,然后通过 libc 或 JDK 接口,在该目录下创建、删除、读写文件或目录。
- 设备1上的应用 A 创建文件 hello.txt,并写入内容"Hello World"。
Context context;... // context初始化File distDir = context.getDistributedDir();String filePath = distDir + File.separator + "hello.txt";FileWriter fileWriter = new FileWriter(filePath, true);fileWriter.write("Hello World");fileWriter.close();
- 设备 2 上的应用 A 通过 Context.getDistributedDir() 接口获取分布式目录。
- 设备 2 上的应用 A 读取文件 hello.txt。
FileReader fileReader = new FileReader(filePath);char[] buffer = new char[1024]; fileReader.read(buffer); fileReader.close(); System.out.println(buffer);
HarmonyOS之数据管理·分布式文件服务的应用相关推荐
- 从windows server的文件服务到分布式文件服务(一)
一.序言 不知道大家是否考虑过服务器与终端机或者叫桌面机.工作站等的区别都有什么?也许你会说体积不同,也许你会说功能不同,甚至有些人会拉一个清单出来说说硬件上面的区别等.其实我最想说的是,两者最大的区 ...
- 从windows server的文件服务到分布式文件服务(二)
四.默认共享描述 除非使用GHOST系统安装,当使用原版的系统光盘安装系统,默认安装会启动共享功能.说到共享,微软实际上提供了两种共享服务,一个就是打印机的共享服务,被称为"打印和文件服务& ...
- Atittit HDFS hadoop 大数据文件系统java使用总结 目录 1. 操作系统,进行操作 1 2. Hdfs 类似nfs ftp远程分布式文件服务 2 3. 启动hdfs服务start
Atittit HDFS hadoop 大数据文件系统java使用总结 目录 1. 操作系统,进行操作 1 2. Hdfs 类似nfs ftp远程分布式文件服务 2 3. 启动hdfs服务start- ...
- .net core 封装文件服务操作——分布式文件服务之OSS
这里分享本人所写的文件微服务系统,在每个SAAS系统内,都或多或少的涉及到文件服务,我们既可以写的非常复杂,又可以写的简洁干练,不管怎么编写文件服务,但始终需要记住的是,一定要支持分布式文件服务,否则 ...
- 从windows server的文件服务到分布式文件服务(九)
八.共享文件夹的磁盘配额管理 磁盘配额管理,是在WINDOWS 2000 SERVER就开始拥有的功能,用于本地的磁盘配额管理.在文件服务中,如果我们只是提供共享的文件给用户读取,仅有管理员有权限往共 ...
- 共享文件服务器设置配额,从windows server的文件服务到分布式文件服务(九):共享文件夹的磁盘配额管理...
八.共享文件夹的磁盘配额管理 磁盘配额管理,是在WINDOWS 2000 SERVER就开始拥有的功能,用于本地的磁盘配额管理.在文件服务中,如果我们只是提供共享的文件给用户读取,仅有管理员有权限往共 ...
- fastdfs 测试客户端_分布式文件服务 FastDFS (第一篇)
[ 基础环境准备 ] 1.yum install -y gcc gcc-c++ 2.yum -y install libevent & vsftpd安装 &selinux关闭 防火墙权 ...
- MinIO实现分布式文件服务
文章目录 什么是MinIO? 应用场景 特点 安装MinIO 获取镜像 启动镜像 图形界面操作 SpringBoot整合MinIO 获取accessKey和secretKey 添加依赖 添加配置 配置 ...
- 从windows server的文件服务到分布式文件服务(八)
(图7.381)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> ...
最新文章
- 基于springboot实现疫情管理系统
- 图形界面报错“已拒绝X11转移申请”的解决方法
- Mathematica常用命令
- Ubuntu下Navicat 配置
- K8S精华问答 | 如何监控部署在Docker容器上的应用程序?
- ABT 链网公测版发布上线:织链为网 为 DApps 奠基
- Android播放c4d工程文件方法,安卓播放网络视频怎么实现?
- heartbeat和keepalive
- 蓝牙定位网关-蓝牙网关通过三角定位获取蓝牙设备的位置
- 传奇GOM引擎授权过期解决方法.
- vuepress-theme-reco@1.x 解决博客首页 与 仓库README不兼容问题
- CNN中.view()和.shape()用法总结
- 珊瑚海-一站式动态化布局框架
- java String工具类/字符串工具类 StringUtil
- 安装软件总是遇到“Windows Installer 正在安装”,下载Windows Installer Clean Up安装不了
- 离散数学-数理逻辑-命题逻辑的基本概念(1)
- 数据湖架构、战略和分析的8大错误认知
- 人类为什么应当使用bilibili
- Flink kafka connectors 源码详解---<1>
- 基于单片机自动智能浇花系统电路设计(毕业设计资料)
热门文章
- Mysql的两种“排名第几且有可能为空的记录”写法(力扣176)
- openwrt多wan限上下行速脚本,基于qosv4,imq模块替换成ifb模块[ZT]
- 全栈工程师--这才是真正的从入门到跑路
- CSS布局奇技淫巧:各种居中
- Spring IOC (DI-依赖注入)
- JavaScript之childNodes属性、nodeType属性学习
- SQL SERVER – Beginning of SQL Server Architecture – Terminology – Guest Post
- 又重装了系统win8+office2013+sql2012+tfs2012+vs2010+vs2012+xna4+kinectsdk1.6+wp8sdk
- 搭建解析内网 linux_Linux 搭建ngrok内网穿透
- VueRouter源码详细解读