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
分享到:
相关推荐
《分布式实时处理系统:原理、架构与实现》
FastCFS的设计和特性使其成为一个出色的分布式文件系统选择。 高性能分布式文件系统 FastCFS注重性能,在处理大规模数据和高并发访问时表现出色。其块存储架构允许快速的数据读写操作,以满足各种工作负载的需求。...
分布式服务架构:原理、设计与实战 高清PDF,因上传文件大小限制,分割成了三个文件,全部下载放在同一目录下,即可成功解压,总共三部分:分布式服务架构:原理、设计与实战.zip 分布式服务架构:原理、设计与实战....
分布式计算与并行处理 分布式计算与并行处理分布式计算与并行处理分布式计算与并行处理分布式计算与并行处理分布式计算与并行处理分布式计算与并行处理
Hadoop分布式文件系统:架构和设计要点中文翻译
在Hadoop的分布式文件系统下,对文件的读写和列出文件的相关属性和目录中的内容
编写分布式的Erlang程序:陷阱和对策
基于TCC的分布式事务代码示例:使用tcc-transaction框架.zip
分布式事务应用:支付宝分布式事务设计 分布式事务应用:支付宝分布式事务设计
范型篇——介绍谷歌、亚马逊、微软、阿里巴巴等著名互联网公司的大规模分布式存储系统架构,涉及分布式文件系统、分布式键值系统、分布式表格系统以及分布式数据库技术等。实践篇——以阿里巴巴的分布式数据库Ocean...
Hadoop分布式文件系统:架构和设计要点.pdf
Hadoop分布式文件系统的模型分析,Hadoop 分布式文件系统是遵循Google 文件系统原理进行开发和实现的,受到了业界极大关注,并 已被广泛应用。 鉴于当前缺乏从系统设计理论的角度对其开展的相关研究,本文从 Hadoop ...
并行和分布式的KMeans算法针对大规模数据集提供了高效的实现方式。并行化可以加速算法的计算过程,而分布式实现则可以处理更大规模的数据集。 这里主要用于算法在并行与分布式的基础应用。 使用场景:适用于处理大...
分布式并行计算:就是利用一组由多种不同结构功能组成的、网络互连的计算机同时解决一个大型综合问题的计算。因为这种环境,分布式并行计算具有计算成本低、计算性能最佳,满足不断增长的计算需求、开发方便等优点。
本书具体介绍开源分布式文件系统相关技术、原理和设计,是学习分布式文件系统的参考资料
深入理解分布式事务
ctjdfs是由java语言开发的一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。
分布式文件系统设计分布式文件系统设计分布式文件系统设计分布式文件系统设计
分布式读写用Java编写的分布式读/写文件系统