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图形化工具创建数据库表。
相关文章
|
1月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
61 3
|
3月前
|
存储 监控 固态存储
【vSAN分布式存储服务器数据恢复】VMware vSphere vSAN 分布式存储虚拟化平台VMDK文件1KB问题数据恢复案例
在一例vSAN分布式存储故障中,因替换故障闪存盘后磁盘组失效,一台采用RAID0策略且未使用置备的虚拟机VMDK文件受损,仅余1KB大小。经分析发现,该VMDK文件与内部虚拟对象关联失效导致。恢复方案包括定位虚拟对象及组件的具体物理位置,解析分配空间,并手动重组RAID0结构以恢复数据。此案例强调了深入理解vSAN分布式存储机制的重要性,以及定制化数据恢复方案的有效性。
89 5
|
4月前
|
SQL NoSQL 数据管理
数据管理DMS使用问题之如何批量导入MongoDB的数据文件
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
15天前
|
安全 测试技术 数据安全/隐私保护
原生鸿蒙应用市场开发者服务的技术解析:从集成到应用发布的完整体验
原生鸿蒙应用市场开发者服务的技术解析:从集成到应用发布的完整体验
|
15天前
|
存储 监控 安全
开发者的黄金时代:原生鸿蒙应用市场的全生命周期服务
2024年10月22日,华为发布了HarmonyOS NEXT,标志着鸿蒙生态进入商用发展阶段。原生鸿蒙应用市场全面焕新,不仅在UI设计、互动体验和隐私安全机制上进行了重塑,还为开发者和用户提供了从开发到分发的全生命周期服务。通过统一上架、多端分发、隐私合规保障等措施,原生鸿蒙应用市场助力开发者实现高效、安全的应用开发与分发,为全球数亿鸿蒙用户带来更流畅、更安全的使用体验。
|
1月前
|
前端开发 JavaScript 小程序
前端新机遇!为什么我建议学习鸿蒙?
【10月更文挑战第4天】前端新机遇!为什么我建议学习鸿蒙?
105 0
前端新机遇!为什么我建议学习鸿蒙?
|
1月前
|
存储 开发框架 .NET
C#语言如何搭建分布式文件存储系统
C#语言如何搭建分布式文件存储系统
66 2
|
1月前
|
分布式计算 Hadoop 网络安全
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
28 1
|
1月前
|
存储 机器学习/深度学习 缓存
Hadoop-07-HDFS集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
Hadoop-07-HDFS集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
40 1
|
2月前
|
数据采集 分布式计算 MaxCompute
MaxCompute 分布式计算框架 MaxFrame 服务正式商业化公告
MaxCompute 分布式计算框架 MaxFrame 服务于北京时间2024年09月27日正式商业化!
79 3