通过HTTPS在Java服务器之间进行大型文件传输

通过HTTPS在Java服务器之间进行大型文件传输,java,spring,stream,Java,Spring,Stream,我有一个中央服务器,许多分布式服务器需要以500MB-10GB+的大文件形式向其传输数据。服务器不在同一物理网络上,无法通过VPN相互连接。当我们试图打开其他端口时,目前我们只能通过443、HTTPS进行通信,这对我们的REST服务很好,但对服务器之间的文件传输很糟糕 我知道这并不像Stackoverflow那样是一个具体的问题,但我想知道:有什么方法比我尝试过的方法更有效 服务器A->生成文件->通过https传输->DMZ->代理传递->在服务器B接收 两台服务器都使用Java1.8、Tom

我有一个中央服务器,许多分布式服务器需要以500MB-10GB+的大文件形式向其传输数据。服务器不在同一物理网络上,无法通过VPN相互连接。当我们试图打开其他端口时,目前我们只能通过443、HTTPS进行通信,这对我们的REST服务很好,但对服务器之间的文件传输很糟糕

我知道这并不像Stackoverflow那样是一个具体的问题,但我想知道:有什么方法比我尝试过的方法更有效

服务器A->生成文件->通过https传输->DMZ->代理传递->在服务器B接收

两台服务器都使用Java1.8、Tomcat和Spring4.1.4.RELEASE。DMZ只是Apache,几乎不受我们的控制

我尝试过的事情

  • 使用Spring的HttpInvokerProxyFactoryBean对服务进行RPC调用(这适用于较小的站点,但较大的站点在传输数据时通常会断开连接)

  • 使用ApacheHttpPost的多部分表单post(这也可以,但我们必须在Apache/tomcat中配置文件限制,而且它的连接也不可靠)

  • 使用名为RMIO的库,如果配置正确,它基本上通过HTTP模拟RMI。这似乎很有希望,因为它从服务器请求流,并从远程服务器写入流。我还没有在HTTPS上真正实现这一点,该库是在2007年编写的(2016年7月之前有一些更新),但它感觉非常过时,没有得到高度维护,我怀疑现在有更好的方法来做这类事情(我找不到)

  • 查看了gRPC,但意识到它只是一个二进制协议,如果我想获得流式效果,我必须基本上处理文件分块

  • 阅读一篇关于使用SpringMVC开发非阻塞REST服务的文章,如果我们同时接收大量文件,这看起来也很有趣,但我不认为它对单个文件传输有什么帮助

  • 我看了很多其他的东西,尝试了一些,但似乎都错了。当我阅读大数据和火花流或我看到的百万个流选项时,我觉得应该有类似的东西来把一个文件从一个服务器转移到另一个服务器,而中间没有一个代理。也许有,但不是通过HTTPS

    如果知道传输的进度(两端)并能够在出现连接问题或传输错误时进行恢复,那就太好了

    但任何方向或想法都会非常有用。感谢您的时间和投入