温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
HarmonyOS
分布式
文件
服务
应用
研究
龙军
2023.6电脑编程技巧与维护1概述随着计算机网络技术的发展,基于互联网的应用向广、向深发展,产生的数据呈指数级增长,通过分布式文件系统(DFS)能有效解决海量数据的存储和管理。HarmonyOS将相关用户的终端设备进行能力整合,通过分布式操作系统相互感知,整合成一个超级终端(One Super Device),在设备间实现极速连接、多端协同、资源共享,为用户提供自然流畅的分布式全场景体验。HarmonyOS3支持更多设备加入超级终端,并提升了鸿蒙智联、万能卡片、流畅性能、隐私安全、信息无障碍等功能。2分布式文件系统与元数据管理分布式文件系统是指进行文件管理的物理储存资源不一定在本地的连接点上,而是通过计算机网络和不同的计算机进行连接,相互进行资源的连接访问1。DFS将固定于某地点的某文件系统扩展到任意多地点和文件系统,各节点组成同一文件系统网络,并提供一个逻辑上的树状文件系统结构,用户不用关心数据存储、获取的具体节点,就像在本地管理和存储文件系统中的数据。分布式文件系统具有冗余性,部分节点的故障不影响系统正常运行,若出现故障的计算机存储的数据已损坏,则可从其他节点恢复损坏的数据,因此其具有较高的容错性。分布式文件系统的关键问题是维系数据的逻辑位置与物理位置的关系,这部分数据叫元数据,它是描述文件系统结构特征的系统数据,例如,文件系统类型、大小、状态信息(超级块)及针对每个文件或目录的访问权限、拥有者、建立/修改时间等,其中特别重要的是文件数据块的分布信息2。元数据的管理方式对系统性能、扩展性及部署模型有决定性作用,分为以下3种方式。(1)集中式元数据。大多数传统横向扩展系统用独立元数据节点来解决数据索引问题,元数据节点用于存储所有的文件名称、位置等,实现简单、代价小,但存在性能瓶颈和单点故障两个问题。访问数据时,该元数据同步更新,随着文件数量增加、集群规模的扩大,元数据服务会制约集群规模、影响集群性能。在集中式元数据架构中,元数据服务器处于核心地位,一旦发生故障,整个系统将丢失可用性,需要额外引入3。(2)分布式元数据。分布式元数据将元数据分布在多个设备中,使每个设备都可独立提供元数据服务,元数据在集群内部同步,解决了集中式元数据的性能瓶颈和单点故障问题,但系统更加复杂、性能开销较大。(3)无元数据服务。在该架构中,客户端和系统节点只要知道文件的路径名和文件名,便可依据算法定位数据,每个节点都具备独立解决元数据问题的能力,无需同步元数据,实现了系统的线性扩展,但消耗算力较多。3HarmonyOS 的分布式文件服务运作机制HarmonyOS的分布式文件指系统中分散存储在多个设备上的文件,采用无中心节点的设计,对每个设备按目录树进行管理,不同应用间的分布式文件目录相互隔离,不能互相访问文件。应用访问分布式文件时,根据Cache订阅发布,按需缓存文件所在的存储设备,然后基金项目:海口经济学院校级科研项目,项目名称:基于鸿蒙的分布式应用开发研究,项目编号:HJKY(ZD)22-03。作者简介:龙军(1971),男,副教授,学士,研究方向为计算机应用。基于 HarmonyOS 分布式文件服务的应用研究龙军,童伟,赵冬冬(海口经济学院腾竞依智网络学院,海口571127)摘要:从分析分布式文件系统的架构和特点入手,对元数据的 3 种管理方式进行比较,继而在分析鸿蒙系统(HarmonyOS)分布式文件服务无中心节点运作机制和全量文件元数据同步方式的基础上,研究HarmonyOS 多设备实现文件分布式共享的条件和文件同名冲突的解决策略,分析了 HarmonyOS 文件操作目录和文件字节流、字符流的主要方法,通过制作一个进行分布式文件复制、写入、读取操作的应用,初步建立了一个基于 HarmonyOS Java UI 的分布式文件服务应用模型,为开发更复杂、更全面的应用提供参考。关键词:鸿蒙系统;分布式;文件服务;元数据18DOI:10.16184/prg.2023.06.0222023.6电脑编程技巧与维护目录名方法目录名方法私有目录Context.getFilesDir()缓存目录Context.getCacheDir()数据目录Context.getDataDir()外部目录Context.getExternalCacheDir()引用目录Context.getPreferencesDir()应用目录Context.getDir(,Context.MODE_PRIVATE)同步目录Context.getDistributedDir()Raw目录getResourceManager().getRawFileEntry()表1HarmonyOS常用的目录操作方法对缓存的分布式文件服务发起文件访问请求4。在HarmonyOS中,分布式文件服务支持用户设备中的应用程序在同一账号下在多设备间进行文件共享。应用程序可以屏蔽文件具体的存储位置,在多设备间访问文件。每个设备都存储一份全量的文件元数据和该设备上产生的分布式文件,使元数据在多台设备间互相同步。应用访问分布式文件时,分布式文件服务首先查询该设备上发起的文件访问请求,将文件内容读取到本地。分布式文件服务运作机制如图1所示。4HarmonyOS 分布式文件服务冲突的解决策略要实现HarmonyOS多设备文件的分布式共享,要用同一华为账号登录设备,打开设备蓝牙或接入同一WLAN局域网。当多台设备对同一文件并发写操作产生冲突时,后写的内容覆盖先写的内容。应用在访问分布式文件时,不能访问不在线设备的文件。HarmonyOS分布式文件 服 务 的 应 用 程 序 要 申 请DISTRIBUTED_DATASYNC权限。考虑网络差的情况,访问远端分布式文件出现长时间不返回或返回失败情况时,要进行相应处理。两台设备有同名文件时,同步元数据会产生冲突,HarmonyOS设计了相应的冲突解决策略。若本地跟远端冲突,则远端文件重命名;若远端多个设备冲突,则以接入该设备的ID为顺序,显示设备ID小的同名文件,其而他文件依次重命名;在组网场景下,若目录树下已经有远端文件,则创建同名文件时提示文件已存在;冲突文件显示_conflict_dev后依次加ID;同名目录间进行融合,若文件和远端目录同名冲突,则远端目录后缀加_remote_directory。5HarmonyOS 文件操作的主要方法HarmonyOS基于Java的文件操作是先通过java.io,用File类获得相应的文件或目录,再采用字节流或字符流进行文件的输入和输出。文件字节流用FileInput-Stream和FileOutputStream实现,使用文件字符流用Fil-eReader和FileWriter完成。文件字符流时,是以字符为单位进行,对于二进制文件可能导致乱码。5.1鸿蒙常用文件夹的操作HarmonyOS的沙箱机制让应用只能访问有限的系统资源,但为了扩展功能,HarmonyOS也提供了诸多接口,通过上下文Context获得相应的目录,HarmonyOS常用的目录操作方法如表1所示。5.2HarmonyOS 常用文件的操作方法File类以抽象方式表示文件或目录名,用于创建文件或目录、查找删除文件等。File对象是存储中实际存在的文件和目录,HarmonyOS用separatorChar解决文件路径分隔问题。FileDescriptor是文件描述符,表示开放文件或套接字。用FileDescriptor()创建实例,当表示文件时,要通过FileInputStream()或FileReader()等流进行read()、write()等文件操作。HarmonyOS设计了描述RawFile文件信息的结构体RawFileDescriptor,包括文件描述符及其在HAP中的起始位置和长度。6HarmonyOS 分布式文件服务开发通过分布式文件服务,HarmonyOS应用可实现多设备间的文件共享。例如,某设备上的应用创建了分布式文件,同账号其他设备上的该应用通过分布式文件服务可读写该设备上的分布式文件。以字节流和字符流两种方式制作一个分布式文件复制、写入、读取的应用。6.1以字节流的方式将Raw文件复制、粘贴到分布式文件中(1)从Raw中读取文件到字节流。具体代码如下:RawFileDescriptor rfd=getResourceManager().getRawFileEntry(resources/rawfile/文件名).openRaw-FileDescriptor();FileInputStream fis=new FileInputStream(rfd.getFileDescriptor();byte r=new bytefis.available();图1分布式文件服务运作机制AppVFSVFSadd/del/lookupadd/del/lookup订阅发布dentryA cachedentryBdentryAdentryB cache(下转第23页)192023.6电脑编程技巧与维护while(fis.read(r)=0)fis.close();(2)将字节流写入分布式文件。具体代码如下:File file=context.getDistributedDir();String sfd=file+File.separator+文件名;FileOutputStream fos=new FileOutputStream(sfd);fos.write(r);fos.flush();fos.close();6.2以字符流的方式写入分布式文件File distDir=context.getDistributedDir();String sfd=distDir+File.separator+文件名;SimpleDateFormat sdf=new SimpleDateFormat(yyyy年MM月dd日hh时mm分ss秒);String s=tf1.getText()+n时间:+sdf.format(newDate().getTime();FileWriter fw=new FileWriter(sfd,true);fw.write(str);fw.close();6.3以字符流的方式读取分布式文件File distDir=context.getDistributedDir();String sfd=distDir+File.separator+文件名;FileReader fr=new FileReader(sfd);char r=new char1024;fr.read(r);fr.close();tf1.setText(new String(r,UTF-8);6.4应用程序运行结果该程序界面基于Java UI构建,用Text组件体现信息,用TextField组件编辑文本,用3个Button组件完成文件复制、写入、读取的操作,在按钮点击事件中使用上述代码。程序在华为P50中的运行结果如图2所示。通过测试,该程序运行正确,完成了一个简单的分布式文件操作模型,为设备协同分布式文件服务的应用开发提供了参考。7结语经过商业化和市场化应用,HarmonyOS得到持续发展与优化,相关生态建设逐步完善,基于HarmonyOS的手机、平板、智能穿戴、智慧屏、车机等设备的市场越来越广阔。HarmonyOS通过分布式设计形成1+8+N的全场景业务能力,提升消费者在智慧生活、智慧家庭、智慧办公等场景下的体验,构建牢固的终端消费者生态系统。参考文献1王勐,周轩宇,侯晓东,等.关于分布式文件系统的技术分析J.中国新通信,2020(8):32-33.2王洋,刘星,须成忠,等.大规模分布式文件系统元数据管理综述J.集成技术,2016(2):57-72.3郑小燕.分布式文件系统中元数据管理策略J.电子技术与软件工程,2018(3):192-193.4陈美汝,郑森文,武延军,等.鸿蒙操作系统应用开发实践M.北京:清华大学出版社,2021.复制文件写入文件读取文件图2运行结果5