我有一个中央服务器,许多分布式服务器需要以稍大的文件形式传输数据,500MB - 10GB +。服务器不在同一物理网络上,并且不能通过VPN相互连接。虽然我们正在尝试打开其他端口,但目前我们只能通过443,HTTPS进行通信,这对我们的REST服务非常有用,但对服务器之间的文件传输非常糟糕。
我知道这并不像Stackoverflow那样具体,但我想知道:哪些方法可能比我尝试过的更好?
服务器A - >生成文件 - >通过https转移 - > DMZ - >代理通行证 - >在服务器B接收
两台服务器都使用Java 1.8,Tomcat和Spring 4.1.4.RELEASE。 DMZ只是Apache而且几乎不受我们控制。
我尝试过的事情......
使用Spring的HttpInvokerProxyFactoryBean对服务进行RPC调用(这适用于较小的站点,但较大的站点通常会在传输数据时丢弃连接)
使用Apache HttpPost的多部分表单帖子(这也有效,但我们必须在apache / tomcat中配置文件限制,加上它的连接也不可靠)
使用名为RMIIO的库,如果配置正确,它基本上模拟了基于HTTP的RMI。这看起来很有希望,因为它从服务器请求流并从远程服务器写入流。我还没有真正通过HTTPS工作,而且该库是在2007年编写的(2016年7月有一些更新),但感觉非常过时,没有高度维护,我怀疑有更好的方法可以做现在这种事情(不是我能找到它们)
看了gRPC,但发现它只是一个二进制协议,如果我想获得流媒体效果,我必须基本上处理文件分块。
阅读一篇关于使用Spring MVC开发非阻塞REST服务的文章,如果我们同时收到大量文件,http://callistaenterprise.se/blogg/teknik/2014/04/22/c10k-developing-non-blocking-rest-services-with-spring-mvc/再次看起来很有趣,但我不知道如何它有助于单个文件传输。
我已经看了很多其他事情,并尝试了一些,但这一切似乎都错了。当我读到有关大数据和Spark流或我看到的任何百万个流选项时,我觉得应该有类似的东西将单个文件从一个服务器传输到另一个服务器而不需要中间的代理。也许有,只是没有通过HTTPS。
很高兴知道转移的进度(两端)并且能够在出现连接问题或传输错误时进行恢复。
但任何方向或想法都会非常有用。感谢您的时间和意见。