`

操作分布式文件之七:如何并行读写远程文件

阅读更多

FttpAdapter是通过FttpReadAdapter的tryReadAll方法进行并行读
FttpAdapter fa = new FttpAdapter("fttp://10.232.20.151/home/log/1.log");
Result<byte[]> rs = fa.getFttpReader().tryReadAll();

 

调用tryReadAll会立即返回一个Result<byte[]>,但是不能马上获取到结果值,需要轮循检查它的状态是否就绪
rs.getStatus()有三种状态:
Result.NOTREADY 未就绪
Result.READY 就绪
Result.EXCEPTION 异常

轮循直到状态准备就绪:
while(rs.getStatus()==Result.NOTREADY);

状态就绪就可以通过getResult()获取到读取结果:
byte[] bts = rs.getResult();

 

可以对一个远程文件的不同部分同时并行读写,也可以对多个远程文件同时并行读写,比如:
String fttppath = "fttp://10.232.20.151/home/log/1.log";
FttpAdapter fa0 = new FttpAdapter(fttppath);
FttpAdapter fa1 = new FttpAdapter(fttppath);
FttpAdapter fa2 = new FttpAdapter(fttppath);
Result<byte[]> rs0 = fa0.getFttpReader(0,5).tryReadAll();
Result<byte[]> rs1 = fa1.getFttpReader(5,5).tryReadAll();
Result<byte[]> rs2 = fa2.getFttpReader(10,5).tryReadAll();
上面表示3个同时并行的读取,分别的从一个文件的0,5,10位置向后读5个字节。

如果是并行写,则是:
Result<Integer>[] rs0 = fa0.getFttpWriter(0,5).tryWrite("hello".getBytes());
Result<Integer>[] rs1 = fa1.getFttpWriter(5,5).tryWrite("world".getBytes());
Result<Integer>[] rs2 = fa2.getFttpWriter(10,5).tryWrite("fttp!".getBytes());

 

注意:上面fa0,fa1,fa2是3个不同的FttpAdapter,而不是同一个FttpAdapter,否则后面的getFttpReader指定的读取范围会覆盖前面的范围,导致产生意外错乱。由于是对同一个远程文件并行读写,所以fa0,fa1,fa2的fttppath相同,如果对多个远程文件并行读写,则fttppath不同。

 

FttpMulWriteReadDemo演示了并行对三个远程文件进行写,然后再并行进行读,在轮循状态时,如果就绪读取到结果后,将rs[i]设置为null表示不再重复检查。

 

邮箱:Fourinone@yeah.net
企鹅群:241116021
demo源码指南及开发包下载地址:
http://www.skycn.com/soft/68321.html

分享到:
评论

相关推荐

    分布式文件系统需求

    6. **命名空间**:分布式文件系统提供统一的命名空间,使得用户可以像操作本地文件系统一样操作远程文件。 7. **安全性**:支持权限管理和访问控制,保护数据安全,防止未经授权的访问。 **源码与工具**: 在学习...

    分布式文件系统 c++编写

    在这个场景下,"分布式文件系统 c++编写" 指的是一个用C++实现的分布式文件系统项目,可能是模仿或受到了Google的分布式文件系统GFS(Google File System)的启发。 GFS是Google为了处理大规模数据存储和处理而设计...

    Hadoop分布式文件系统的模型分析

    这与传统分布式文件系统支持多种访问模式有所不同,后者通常更加灵活,支持随机读写和更复杂的文件操作。 #### 四、结论与展望 通过以上分析可以看出,Hadoop分布式文件系统不仅继承了Google文件系统的优秀设计...

    分布式文件系统的研究.pdf

    分布式文件系统是一种在多台计算机之间共享存储资源的技术,它能够提供全局一致的命名空间,使得用户可以像操作本地文件一样操作远程文件。本研究主要探讨了分布式文件系统的设计与实现,尤其是副本管理和一致性的...

    10 分布式文件系统1

    分布式文件系统是一种跨越多台计算机的文件存储和管理系统,它允许多个节点共享和操作同一份数据,从而提高数据访问的效率和系统的可扩展性。本章主要探讨了分布式文件系统的概念、架构、特性和常见解决方案。 首先...

    大规模分布式存储系统:原理解析与架构实战

    2. 数据分片:大规模分布式存储系统通常采用数据分片策略,将大文件拆分为多个小块,分别存储在不同的节点上,以提高读写效率和容错能力。 3. 数据复制:为了保证数据的高可用性,系统通常会进行数据复制。常见的...

    淘宝分布式并行计算四合一框架Fourinone

    - **分布式文件操作**:Fourinone允许用户像操作本地文件一样操作远程文件,包括并发读写、拆分、排他访问、复制、解析等操作,从而增强了对多台服务器硬盘资源的利用。 - **分布式协同和锁**:考虑到多台计算机物理...

    Fourinone分布式并行计算四合一框架

     比如以这样的方式读取远程文件:  FttpAdapter fa = FttpAdapter("fttp://v020138.sqa.cm4/home/log/a.log");  fa.getFttpReader().readAll();  提供对集群文件的操作支持,包括:  1、元数据访问,添加...

    分布式文件系统管理策略研究.pdf

    分布式文件系统是云计算技术的核心组件之一,它允许数据存储在多个服务器上,并对客户端呈现为单一的存储系统。分布式文件系统的管理策略对于保证系统的高性能和高可靠性至关重要。本文重点研究了分布式文件系统中...

    深入浅出分布式技术原理 教程 下载 下载4.zip

    5. 分布式文件系统:如HDFS,是为了解决大规模数据存储而设计的,支持高效的读写操作和容错机制。文件系统可以分布式地存储在多个节点上,提供高带宽的数据访问。 6. 分布式一致性算法:例如Paxos、Raft和Gossip...

    分布式系统课件,想学的可以参考参考

    - **分布式文件系统**:如Hadoop的HDFS,用于存储大量数据。 5. **分布式服务**: - **服务发现**:通过服务注册和发现机制,动态管理服务实例。 - **负载均衡**:如Nginx、HAProxy,用于分配请求,提升系统性能...

    并行文件系统调研报告

    - **Coda**:分布式文件系统,源自AFS2,具备离线工作能力,支持网络中断后的自动同步。 - **Cvsfs**:将CVS(版本控制系统)的内容作为普通文件读写,方便了开发过程中的文件管理。 - **Efs**:扩展文件系统,早期...

    行业分类-设备装置-一种面向大规模多媒体检索的分布式异构并行计算系统.zip

    8. **分布式存储**:数据分布式存储在各个节点,可能采用分布式文件系统如Hadoop HDFS,以支持高效的读写操作。 9. **索引与查询优化**:针对多媒体数据的特点,构建适应的索引结构,优化查询效率,如倒排索引、...

    西电分布式上机内容std.rar

    7. **分布式存储系统**:分布式文件系统如Hadoop HDFS或Google的GFS,可能是实验的一部分。学生需要了解这些系统的架构和操作,包括文件的分块、副本策略以及读写操作。 8. **负载均衡**:确保资源的有效利用,...

    分布式系统项目1

    6. **并行读写与文件锁**:支持多用户并行读写,这就需要引入文件锁来避免并发操作导致的数据混乱。 7. **测试与验证**:需要通过本地多进程模拟不同节点进行测试,并提供测试命令或用例,以及测试结果的截图或视频...

    集群环境NFS文件系统

    NFS(Network File System),即网络文件系统,是一种分布式文件系统协议,允许用户在网络上访问远程文件如同访问本地文件一样。在集群环境中,NFS充当着实现全局文件共享的核心角色,其高效运行对整个系统的性能至...

    分布式检索

    分布式检索是一种在大规模数据集上实现高效搜索的技术,它通过将数据分布在多个节点上,使得检索操作能够并行处理,从而提高查询速度和系统吞吐量。在标题中提到的"分布式检索后台面板"可能是一个用于管理和配置...

    H3CS-DS【H3C认证分布式存储 】培训PPT.rar

    2. **H3C分布式存储架构**:详细讲解H3C DS的系统架构,包括硬件组件(如服务器节点、存储设备、网络设备)、软件组件(分布式文件系统、数据管理模块等),以及各组件之间的交互方式。 3. **高可用性与容错性**:...

Global site tag (gtag.js) - Google Analytics