整个文件传输系统搭建与先前完成的资源发现之上,在资源发现中,给资源请求者留出了一个接口,afterGetHolder这个接口处于用户接入资源注册中心后进行的操作,该操作由注册中心将所需持有者列表交给用户后,接下来就该由用户找到自己需要的资源发起请求。
流程:
获取sender后,首先要进行发送者的筛选,达到负载均衡的目的(按比计算或随机等等优化计算)。
获取所需sender后,在请求者端建立接收服务器,并开启该服务器。
该接收服务器会等待发送者的连接,先阻塞起来。
服务器开始接收后,在请求端依据发送者个数、按照分发策略,用RMI给每个发送者分配发送任务。
在发送端收到发送任务后,建立发送客户端并与接收服务器进行连接。
在连接到接收服务器后(即接收服务器接收到发送者),
在发送端:
开始进行发送,先发送一个文件片段头,再先前按照16M分的文件片段,在发送时再按照32k先进行文件从本地的读取,再发送该片段。
在接收端:
开始进行接收,首先接收文件片段头,知道了是哪个文件、多少偏移量、多大文件,依据该文件大小判断接收是否完成。接收一个完整片段后,依据文件名、偏移量找到该片段所处位置,用RandomAccessFile将片段写到本地文件中。接收完毕在断点信息中进行修改,以便后续断点续传使用。
本文介绍了一个基于资源发现的文件传输系统的工作流程。系统通过负载均衡选择发送者,请求者建立接收服务器并分配发送任务,发送者随后连接并发送文件片段。
2753

被折叠的 条评论
为什么被折叠?



