欢迎来到天天文库
浏览记录
ID:5654543
大小:1.07 MB
页数:9页
时间:2017-12-21
《大文件网络传输设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、大文件网络传输设计1.背景省一级的政府公开目录信息数据需要各地方的门户网站将相关数据上报,同时还需要各相关政府部门的数据,这就要求cms按照规则取出数据,然后将数据传输到省级的服务器,再由省级的cms将传来的数据进行解析入库,这其中数据的网络传输是一个很重要的环节。由于传输的数据有可能很大,同样网络环境也可能很复杂,这就要求需要专门的设计来解决。而其它的一些项目中也有相似的问题,所以将其独立出来,实现一个专门的系统提供这种服务。2.要求此系统需要达到如下要求:Ø在internet环境中可靠的传输;Ø可以传输最少GB级大小的文件;Ø能够独立部署
2、和运行,不依赖其他的系统,同时不依赖特定的java中间件平台;Ø提供服务与访问接口;Ø相对便捷的系统部署;3.设计思路为了能够减轻网络负担并且能够适应复杂的网络环境,每次传输的数据量不能太大,所以大文件传输需要将它分成许多的小片段,一段一段传输,传完之后再将这些片段重新组成原始文件。如下图所示:图一传输文件前对文件的压缩,切割处理与传输文件后多文件的合并解压处理的方案选择很明确,就是采用Java的本身的提供的类解决。建议采用org.apache.zip包和nio包处理。网络传输的方案有多种,如下详述。1.1.ftp方案FTP是TCP/IP协议
3、组中的协议之一,是英文FileTransferProtocol的缩写。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。FTP协议的任务是从一台计算机
4、将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp协议对话,并且能访问Internet,你可以用ftp命令来传输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。在本系统中如果采用ftp方案,则需要在接收端与发送端放置两个ftp,因为系统是双工方式工作的。同时在两侧还需要开发一个守护进程定时的轮询ftp服务器存放上传文件的文件夹,用来获知是否有文件上传,并且是否上传结束。图二表示的是这种方案的逻辑结构。图二1.2.jmsserver方案1.2
5、.1.Jms简介在不同系统之间交换信息的一大障碍是如何在精确交换和格式化数据方面取得一致。JavaMessageService(Java消息服务,简称JMS)通过提供一种与J2EE应用程序或传统系统交互的方法部分的解决了这个问题。JMS的通用接口集合以异步方式发送或接收消息。异步方式接收消息显然是使用间断网络连接的客户机。另外,JMS采用一种宽松结合方式整合企业系统的方法,其主要的目的就是创建能够使用跨平台数据信息的、可移植的企业级应用程序,而把开发人力解放出来。JMS的可靠性机制:Ø确认JMS消息只有在被确认之后,才认为已经被成功地消费了。
6、消息的成功消费通常包含三个阶段:客户接收消息、客户处理消息和消息被确认。 在事务性会话中,当一个事务被提交的时候,确认自动发生。在非事务性会话中,消息何时被确认取决于创建会话时的应答模式(acknowledgementmode)。该参数有以下三个可选值:Session.AUTO_ACKNOWLEDGE。当客户成功的从receive方法返回的时候,或者从MessageListener.onMessage方法成功返回的时候,会话自动确认客户收到的消息。Session.CLIENT_ACKNOWLEDGE。客户通过消息的acknowledge方法
7、确认消息。需要注意的是,在这种模式中,确认是在会话层上进行:确认一个被消费的消息将自动确认所有已被会话消费的消息。例如,如果一个消息消费者消费了10个消息,然后确认第5个消息,那么所有10个消息都被确认。Session.DUPS_ACKNOWLEDGE。该选择只是会话迟钝第确认消息的提交。如果JMSprovider失败,那么可能会导致一些重复的消息。如果是重复的消息,那么JMSprovider必须把消息头的JMSRedelivered字段设置为true。Ø持久性JMS支持以下两种消息提交模式:PERSISTENT。指示JMSprovider持
8、久保存消息,以保证消息不会因为JMSprovider的失败而丢失。NON_PERSISTENT。不要求JMSprovider持久保存消息。Ø优先级可以使用消息优先级
此文档下载收益归作者所有