找到在Java服务器之间传输大文件的好方法

时间:2011-07-21 07:57:24

标签: java database web-services file

项目中有一个主要的数据库服务器,安装在不同位置的其他服务器维护自己的本地数据库。我们必须允许每个系统将其本地数据库更新为主数据库上的任何版本。所有服务器都运行Java环境。

传输文件似乎有很多种方法:简单的网页下载页面,网络服务,FTP,套接字..您认为哪种方式适合这种情况?

一般程序如下:

1,客户端向服务器发送一串版本 2,Server生成补丁并发回 (由于补丁可能太大,它应该分成几部分)

我正在考虑的是在程序2中 确实有很多选择。

1,我应该首先计算要获取的行数并计算它应分割的部分数量。

然后我遇到了一个选择,我是否应该向客户发回部件数量或链接列表,如果基于Web请求的连接,客户端使用链接请求每个部分,或者我可以推送如果服务器与套接字连接,则一个接一个地返回,或者我可以执行以下步骤:

2,我可以从服务器数据库中逐个获取所需的记录,每次获取有限的行,返回为Java List,立即将List序列化为文件,以便为下一部分清空内存,所以我得到文件夹。我将文件压缩为单个文件并发回,避免客户端再次请求。

在请求相同版本时,可以为其他客户端保留生成的补丁文件。

我认为所有方法都有效,但您认为哪种方式更好?或者你知道更好的方法吗? 让我们分享。

2 个答案:

答案 0 :(得分:3)

您可以尝试使用Netty进行从服务器到客户端的大型文件传输。

在Netty主页上,有很好的example如何通过网络发送大文件。

答案 1 :(得分:0)

最后,我在这里谈谈我选择的方式。

我让主服务器关闭了验证传入请求的操作。准备要串行化的数据并将它们打包成一个zip文件。将zip文件作为响应发送回InputStream中的请求计算机。

然后请求机器解压缩文件并反序列化并使用它们。