大文件网络传输设计 1 . 背景 省一级的政府公开目录信息数据需要各地方的门户网站将相关数据上报,同时还需要各相关政府部门的数据,这就要求cms 按照规则取出数据,然后将数据传输到省级的服务器,再由省级的cms 将传来的数据进行解析入库,这其中数据的网络传输是一个很重要的环节。由于传输的数据有可能很大,同样网络环境也可能很复杂,这就要求需要专门的设计来解决。而其它的一些项目中也有相似的问题,所以将其独立出来,实现一个专门的系统提供这种服务。 2 . 要求 此系统需要达到如下要求: 在 internet 环境中可靠的传输; 可以传输最少 GB 级大小的文件; 能够独立部署和运行,不依赖其他的系统,同时不依赖特定的java 中间件平台; 提供服务与访问接口; 相对便捷的系统部署; 3 . 设计思路 为了能够减轻网络负担并且能够适应复杂的网络环境,每次传输的数据量不能太大,所以大文件传输需要将它分成许多的小片段,一段一段传输,传完之后再将这些片段重新组成原始文件。如下图所示: 文件集合Zip压缩待传输文件集合压缩后的z ip文件切片分割成多个segment传输所有的segment传输文件起始地网络传输所有的segment合并成z ip文件Zip文件解压获得传输文件集合传输文件目的地图一 传输文件前对文件的压缩,切割处理与传输文件后多文件的合并解压处理的方案选择很明确,就是采用 Java 的本身的提供的类解决。建议采用 org.apache.zip 包和 nio 包处理。 网络传输的方案有多种,如下详述。 3.1. ftp 方案 FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol 的缩写。该协议是Internet 文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(dow nload)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。在TCP/IP 协议中,FTP 标准命令TCP 端口号为21,Port 方式数据端口为20。FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过 ftp 协议对话,并且能访问 Internet, 你可以用ftp 命令来传输文件。每种操作系统...