HarmonyOS学习路之开发篇—数据管理(分布式文件服务)

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介: 分布式文件服务能够为用户设备中的应用程序提供多设备之间的文件共享能力,支持相同帐号下同一应用文件的跨设备访问,应用程序可以不感知文件所在的存储设备,能够在多个设备之间无缝获取文件。

分布式文件服务概述

分布式文件服务能够为用户设备中的应用程序提供多设备之间的文件共享能力,支持相同帐号下同一应用文件的跨设备访问,应用程序可以不感知文件所在的存储设备,能够在多个设备之间无缝获取文件。


基本概念

分布式文件

分布式文件是指依赖于分布式文件系统,分散存储在多个用户设备上的文件,应用间的分布式文件目录互相隔离,不同应用的文件不能互相访问。


文件元数据

文件元数据是用于描述文件特征的数据,包含文件名,文件大小,创建、访问、修改时间等信息。


运作机制

分布式文件服务采用无中心节点的设计,每个设备按目录树管理。当应用需要访问分布式文件时,根据Cache订阅发布,按需缓存文件所在的存储设备,然后对缓存的分布式文件服务发起文件访问请求。


图1 分布式文件服务运作示意图

约束与限制

应用程序如需使用分布式文件服务完整功能,需要申请ohos.permission.DISTRIBUTED_DATASYNC权限。

多个设备需要登录相同华为帐号,然后打开多个设备的蓝牙,或将多个设备接入同一WLAN局域网,才能实现文件的分布式共享。

当多台设备对同一文件并发写操作时有数据冲突,后写会覆盖先写,应用需要主动保证时序控制并发流程。

应用访问分布式文件时,如果文件所在设备离线,文件不能访问。

网络情况差时,访问存储在远端的分布式文件时,可能会长时间不返回或返回失败,应用需要考虑这种场景的处理。

当两台设备有同名文件时,同步元数据时会产生冲突。冲突解决策略:1.本地跟远端冲突 ,远端文件被重命名,看到的同名文件是本地同名文件,远端文件被重命名;2.远端多个设备冲突,以接入本设备ID为顺序,显示设备ID小的同名文件,其他文件被依次重命名;3.如果组网场景,目录树下已经有远端文件,创建同名文件,提示文件已存在;4. 冲突文件显示_conflict_dev后依次加id;5. 同名目录之间仅融合不存在冲突,文件和远端目录同名冲突,远端目录后缀加_remote_directory

分布式文件服务开发

场景介绍

应用可以通过分布式文件服务实现多个设备间的文件共享,设备1上的应用A创建了分布式文件a,设备2上的应用A能够通过分布式文件服务读写设备1上的文件a。


接口说明

分布式文件兼容POSIX文件操作接口,应用使用Context.getDistributedDir()接口获取目录后,可以直接使用libc或JDK访问分布式文件。


表1 分布式文件服务API接口功能介绍

image.png

开发步骤

应用可以通过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。


Context context;
... // context初始化
File distDir = context.getDistributedDir();
String filePath = distDir + File.separator + "hello.txt";
FileReader fileReader = new FileReader(filePath);
char[] buffer = new char[1024];        
fileReader.read(buffer);        
fileReader.close();        
System.out.println(buffer);


相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
相关文章
|
4天前
|
存储 监控 固态存储
【vSAN分布式存储服务器数据恢复】VMware vSphere vSAN 分布式存储虚拟化平台VMDK文件1KB问题数据恢复案例
在一例vSAN分布式存储故障中,因替换故障闪存盘后磁盘组失效,一台采用RAID0策略且未使用置备的虚拟机VMDK文件受损,仅余1KB大小。经分析发现,该VMDK文件与内部虚拟对象关联失效导致。恢复方案包括定位虚拟对象及组件的具体物理位置,解析分配空间,并手动重组RAID0结构以恢复数据。此案例强调了深入理解vSAN分布式存储机制的重要性,以及定制化数据恢复方案的有效性。
19 5
|
21天前
|
存储 开发框架 安全
鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段一
HarmonyOS NEXT星河版的应用开发标志着华为分布式操作系统的全新篇章,它聚焦于打造原生精致、易用、流畅、安全、智能和互联的极致体验。开发者可以利用其先进的API和工具集,如DevEco Studio,构建高性能、跨设备无缝协同的应用程序,从而充分利用HarmonyOS的分布式能力,为用户带来一致且丰富的多场景数字生活体验。随着“学习强国”、岚图汽车、中国电信等知名企业和应用的加入,鸿蒙生态正迅速扩展,引领着原生应用开发的新趋势。
39 3
鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段一
|
20天前
|
前端开发 JavaScript 小程序
基于Vue开发的门户网站展示和后台数据管理系统
基于Vue开发的门户网站展示和后台数据管理系统
|
1月前
|
人工智能 搜索推荐 数据可视化
鸿蒙应用实践:利用扣子API开发起床文案生成器
本文将使用扣子(coze)智能体API开发一个起床文案生成器,用于自己的鸿蒙应用中生成”千人千面“的起床文案。
53 0
|
2月前
|
分布式计算 Hadoop Java
分布式系统详解--框架(Hadoop--JAVA操作HDFS文件)
分布式系统详解--框架(Hadoop--JAVA操作HDFS文件)
31 0
|
3月前
|
JavaScript API
鸿蒙开发接口UI界面:【@ohos.mediaquery (媒体查询)】
鸿蒙开发接口UI界面:【@ohos.mediaquery (媒体查询)】
48 1
|
3月前
|
Cloud Native 数据管理 关系型数据库
【阿里云云原生专栏】云原生数据管理:阿里云数据库服务的分布式实践
【5月更文挑战第21天】阿里云数据库服务在云原生时代展现优势,应对分布式数据管理挑战。PolarDB等服务保证高可用和弹性,通过多副本机制和分布式事务确保数据一致性和可靠性。示例代码展示了在阿里云数据库上进行分布式事务操作。此外,丰富的监控工具协助用户管理数据库性能,支持企业的数字化转型和业务增长。
210 1
|
3月前
|
分布式计算 负载均衡 Java
构建高可用性Java应用:介绍分布式系统设计与开发
构建高可用性Java应用:介绍分布式系统设计与开发
42 0
|
3月前
|
存储 负载均衡 NoSQL
【分布式技术架构】「Tomcat技术专题」 探索Tomcat集群架构原理和开发分析指南
【分布式技术架构】「Tomcat技术专题」 探索Tomcat集群架构原理和开发分析指南
94 1
|
3月前
|
缓存 应用服务中间件 数据库
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(多级缓存设计分析)
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(多级缓存设计分析)
103 1