我们有一个JMS服务器,主要用于两个盒子之间的通信。(Tibco)在两个盒子上运行的进程基本上读取输入XML,处理它并将它们连接到平面文件.Per XML,将有30个平面文件(平面文件的总大小从1MB到10MB不等)。在辅助盒上运行的进程需要将文件传输到主服务器。我看到有两种选择 -
您认为哪个选项“更好”?如果辅助箱子说出500 SCP /小时,SCP会出现问题吗?在第二个选项中,JMS服务器将在某个临时位置存储平面文件?
谢谢
答案 0 :(得分:1)
我绝对投票支持SCP解决方案。 JMS将成为传输文件的过度杀手锏。使用JMS,您需要将文件读入内存,将其放入JMS消息中,通过线路以serlialized形式传输(这可能会导致更大的数据大小),然后对其进行反序列化,然后再将其保存到文件中。此外,如果您的JMS队列配置为持久性,它还将为您的消息处理添加持久的存储开销。所有序列化/反序列化/ perstitense都会给JVM的垃圾收集器带来压力,这可能会影响性能。
编辑:使用SCP解决方案,您基本上可以将文件数据从一台服务器传输到另一台服务器。所以,几乎没有内存开销。虽然每小时500次传输30个10MB大小的文件,但每小时5Gb,这是很多。它给你约。每秒1.3Mb。你有这样的带宽吗?
但另一种解决方案可能是您只按需传输文件。例如,仅在收到JMS时才启动传输。您可以使用JSCH库来进行真正的传输而不是shell脚本。