将文件从一个服务器复制到另一个服务器

时间:2011-05-26 08:52:32

标签: jms

我们有一个JMS服务器,主要用于两个盒子之间的通信。(Tibco)在两个盒子上运行的进程基本上读取输入XML,处理它并将它们连接到平面文件.Per XML,将有30个平面文件(平面文件的总大小从1MB到10MB不等)。在辅助盒上运行的进程需要将文件传输到主服务器。我看到有两种选择 -

  1. SCP-Secure Copy将复制30个平面文件   通过建立SCP连接(通过shell脚本执行)。
  2. 将文件作为JMS Message.On主要的JMS接收程序发送   将读取这些并将平面文件与其他平面文件合并。
  3. 您认为哪个选项“更好”?如果辅助箱子说出500 SCP /小时,SCP会出现问题吗?在第二个选项中,JMS服务器将在某个临时位置存储平面文件?

    谢谢

1 个答案:

答案 0 :(得分:1)

我绝对投票支持SCP解决方案。 JMS将成为传输文件的过度杀手锏。使用JMS,您需要将文件读入内存,将其放入JMS消息中,通过线路以serlialized形式传输(这可能会导致更大的数据大小),然后对其进行反序列化,然后再将其保存到文件中。此外,如果您的JMS队列配置为持久性,它还将为您的消息处理添加持久的存储开销。所有序列化/反序列化/ perstitense都会给JVM的垃圾收集器带来压力,这可能会影响性能。

编辑:使用SCP解决方案,您基本上可以将文件数据从一台服务器传输到另一台服务器。所以,几乎没有内存开销。虽然每小时500次传输30个10MB大小的文件,但每小时5Gb,这是很多。它给你约。每秒1.3Mb。你有这样的带宽吗?

但另一种解决方案可能是您只按需传输文件。例如,仅在收到JMS时​​才启动传输。您可以使用JSCH库来进行真正的传输而不是shell脚本。