将文件从一个服务器复制到另一个服务器
问题描述:
我们有一个主要用于在两个盒子之间进行通信的JMS服务器(Tibco),它们在两个盒子上运行,基本上读取输入XML,处理它并将它们转换为平面文件。 ,将会有30个平面文件(平面文件合计大小从1MB到10MB不等)。在辅助框上运行的进程需要将文件传输到主服务器。有两种选择我见式将文件从一个服务器复制到另一个服务器
- SCP-Secure的副本将通过使SCP连接(通过shell脚本执行)复制30个平面文件 。
- 发送文件作为JMS消息。在主要情况下,JMS接收器程序 将读取这些文件并将平面文件与其他平面文件合并。
您认为哪个选项“更好”?如果次级箱子发出500 SCP /小时,SCP会出现问题吗?第二种选择是,JMS服务器将在某个临时位置存储平面文件吗?
谢谢
答
我决定投票给SCP解决方案。 JMS将是一个传输文件的矫枉过正。使用JMS,您需要将文件读入内存,将其放入JMS消息中,以serlialized形式通过网络传输(这可能会导致更大的数据大小),然后将其反序列化,然后再将其保存到文件中。另外,如果您的JMS队列被配置为持久性的,它也会将消极的存储开销添加到您的消息处理中。所有这些序列化/反序列化/容易理解都会给JVM的垃圾收集器带来压力,这可能会影响性能。
编辑:通过SCP解决方案,您基本上可以将文件数据从一台服务器传输到另一台服务器。所以,几乎没有内存开销。虽然每小时转换30个10MB总共500个文件的文件会给你5Gb一个小时,这是很多。它给你约。每秒1.3Mb。你有这样的带宽吗?
但是,另一种解决方案可以是仅按需传输文件。例如,只有在收到JMS时才启动传输。您可以使用JSCH库来执行实际传输,而不是使用shell脚本。