FileBatch类提供了一系列对批量并行读写操作支持(包括对FttpAdapter和FileAdapter),它跟并行读写的区别是不需要检查结果,会等到所有并行读写任务全部完成才返回,并在发生异常时提供事务补偿支持。
1、批量并行读:
public Result<byte[]>[] readAllBatch(TryByteReadAdapter[] fras)
实现对多个FttpReadAdapter任务的批量读,输入一个FttpReadAdapter数组,并行进行它们的读取,直到每个FttpReadAdapter读完后,以数组的方式批量输出它们对应的结果,比如:
FttpReadAdapter[] fras = new FttpReadAdapter[3];
fras[0]=new FttpAdapter(fttppath).getFttpReader(0,5);
fras[1]=new FttpAdapter(fttppath).getFttpReader(5,5);
fras[2]=new FttpAdapter(fttppath).getFttpReader(10,5);
Result<byte[]>[] rs = new FileBatch().readAllBatch(fras);
上面表示并行从3个位置读一个文件内容,等全部读完后,将对应的结果放在一个数组里返回
2、批量并行写:
FttpWriteAdapter[] fwas = new FttpWriteAdapter[3];
fwas[0]=new FttpAdapter(fttppath).getFttpWriter(0,5);
fwas[1]=new FttpAdapter(fttppath).getFttpWriter(5,5);
fwas[2]=new FttpAdapter(fttppath).getFttpWriter(10,5);
Result<Integer>[] rs = new FileBatch().writeBatch(fwas, "abcde".getBytes());
上面表示并行对一个文件的3个位置写入“abcde”字符,等全部写完后,返回对应结果数组
注意:这里跟并行读写一样,3个FttpReadAdapter或者FttpWriteAdapter是由3个不同的FttpAdapter生成,而不是同一个生成
3、批量并行读写:
Result<Integer>[] rs = new FileBatch().readWriteBatch(fras,fwas);
表示将上面的批量读和批量写在一个过程中完成,从fras里每个FttpReadAdapter读,然后通过fwas里对应的每FttpWriteAdapter写入,所有读写完成后返回写入结果数组
4、事务补偿处理:
在批量并行读写过程中,如果其中一个FttpReadAdapter或者FttpWriteAdapter发生错误,那么框架会进行分布式事务处理,进行两阶段提交,然后调用undo操作进行事务补偿处理,撤消已经产生的改动和影响。
FileBatch类提供了对undo方法的定义
public Result[] undo(Result[] rtarr)
rtarr是传入的结果,然后返回undo的撤消处理后的结果
比如调用readAllBatch发生错误,FileBatch会将结果传入undo进行撤消操作,然后才返回结果
因此开发者需要自己实现undo方法的内容,继承FileBatch类覆盖undo方法:
public Result[] undo(Result[] rtarr){
for(int i=0;i<rtarr.length;i++){
if(rtarr[i].getStatus()==Result.EXCEPTION)
System.out.println("Result index"+i+" Error");
}
return rtarr;
}
上面的undo方法将发生异常的结果的序号输出显示
所有的批量读写方法都可以以排它的方式进行,指定boolean locked参数即可
另外:除了byte批量并行读写外,也支持所有的整形批量并行读写,api和操作几乎类似
FttpBatchWriteReadDemo演示了一个批量并行读、批量并行写、批量并行读写操作和事务补偿操作
邮箱:Fourinone@yeah.net
企鹅群:241116021
demo源码指南及开发包下载地址:
http://www.skycn.com/soft/68321.html
分享到:
相关推荐
分布式存储系统:Cassandra:Cassandra的读写操作与数据一致性.docx
分布式存储系统:HBase:HBase数据读写API教程.docx
FastCFS的设计和特性使其成为一个出色的分布式文件系统选择。 高性能分布式文件系统 FastCFS注重性能,在处理大规模数据和高并发访问时表现出色。其块存储架构允许快速的数据读写操作,以满足各种工作负载的需求。...
分布式读写文件系统是现代大型应用处理海量数据的关键技术之一,尤其在云计算和大数据领域中起着核心作用。本文将详细解析标题为“DistributedRW”的项目,它是一个使用Java编程语言实现的分布式读写文件系统。这个...
* 分布式事务处理的应用:分布式数据库系统、分布式文件系统等 八、 ZooKeeper 分布式系统 * ZooKeeper 的概念:一个开源的分布式应用程序协调服务 * ZooKeeper 的特点:高可用性、高性能、灵活性等 * ZooKeeper ...
在Hadoop的分布式文件系统(HDFS)中,文件的读写是整个大数据处理的核心操作。HDFS的设计目标是提供高容错性、高吞吐量的数据访问,以支持大规模数据处理的应用。以下是对Hadoop文件读写及相关属性的详细说明。 ##...
1. **分布式存储**:Hadoop的HDFS(Hadoop Distributed File System)是一个分布式文件系统,它允许跨多个服务器存储和处理大量数据。 2. **可扩展性**:Hadoop可以处理从GB到PB级别的数据,并且可以通过增加更多的...
1. 早期的分布式文件系统一般以提供标准接口的远程文件访问为目的,更多地关注访问的性能和数据的可靠性。 2. xFS 采用了多层次结构很好地利用了文件系统的局部访问的特性,无效写回(Invalidation-based Write Back...
分布式服务架构:原理、设计与实战 高清PDF,因上传文件大小限制,分割成了三个文件,全部下载放在同一目录下,即可成功解压,总共三部分:分布式服务架构:原理、设计与实战.zip 分布式服务架构:原理、设计与实战....
3. **扩展性**:随着硬件设备的增加,分布式文件系统能够线性扩展其存储容量和处理能力,以应对不断增长的数据需求。 4. **高并发访问**:支持多个客户端同时对同一文件进行读写操作,通过并行处理提高效率。 5. *...
9. **性能优化**:可能包括本地缓存、预读取、批量操作等技术,以提高数据读写速度。 10. **网络通信**:分布式系统间的通信可能使用TCP/IP协议,可能使用RPC(远程过程调用)框架实现跨节点的通信。 在kfs-0.2.2...
总结来说,分布式文件系统HDFS的设计兼顾了硬件成本、数据处理效率和容错性,虽然有一些局限性,但在存储和处理大规模数据集方面具有显著的优势。HDFS的普及和应用为大数据处理技术提供了坚实的基础,极大地推动了...
Hadoop分布式文件系统的设计目标是满足大规模数据处理的需求,解决大规模数据存储和处理的问题。Hadoop分布式文件系统的设计考虑了以下几点: * 大规模数据集:Hadoop分布式文件系统需要能够存储和管理大规模数据集...
Fortran分布式计算:跨入并行处理的新纪元(PDF文档) Fortran语言,作为科学和工程计算的基石,其在分布式计算领域的应用至关重要。分布式计算允许Fortran程序利用多个物理或逻辑上分离的计算资源来执行大规模计算...
Fortran分布式计算:跨入并行处理的新纪元《PDF文档》 Fortran语言,作为科学和工程计算的基石,其在分布式计算领域的应用至关重要。分布式计算允许Fortran程序利用多个物理或逻辑上分离的计算资源来执行大规模计算...
分布式事务在大型分布式系统中是不可或缺的,它确保了数据的一致性和完整性。TCC(Try-Confirm-Cancel)模式是一种解决分布式事务问题的常见方案。这个压缩包“基于TCC的分布式事务代码示例:使用tcc-transaction...
这与传统分布式文件系统支持多种访问模式有所不同,后者通常更加灵活,支持随机读写和更复杂的文件操作。 #### 四、结论与展望 通过以上分析可以看出,Hadoop分布式文件系统不仅继承了Google文件系统的优秀设计...
分布式事务是指在分布式系统中,为了确保跨多个节点上的操作能够正确地完成或者全部回滚,所采取的一种事务处理机制。在这样的场景下,事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的...
本文旨在介绍一种名为Fourinone2.0框架下的分布式文件访问机制,特别是通过FttpAdapter和FileAdapter组件实现的分布式文件访问与操作。 #### 二、FttpAdapter与FileAdapter简介 在Fourinone2.0框架下,FttpAdapter...