2

我们有单独的 Java 实例程序处理原始博客,如下所示:

jvm instance 1 read fileA --> process
jvm instance 2 read fileA ---> process
jvm instance 3 read fileA ---> process
....

我认为当 jvm 实例的数量增加时,disk IO进程的数量会增加。有时这个解决方案无法正常工作。

所以谁能告诉我另一个解决方案for reduce the disk IO

我认为一个理想的方法是使用 JMS 服务器(如 Apache ActiveMQ)来读取文件并存储在队列和进程中。

如果我使用 JMS 有什么问题吗???

请帮助我。

4

1 回答 1

2

事件驱动的解决方案在这里肯定是一个不错的选择,因此 JMS 可能是一个不错的解决方案。

但是你应该记住,如果你的消费者跟不上生产者的步伐,而你将使用持久传递,那么消息将存储在你的硬盘上,这将导致磁盘 IO。但我认为这不是问题,因为您始终可以增加并发消费者的数量,甚至使用集群(例如,使用 ActiveMQ 非常容易配置)来跟上负载。

总而言之,我认为 JMS 将是您的问题的一个很好的解决方案,因为您不需要主动轮询文件系统以进行更改,并且可以非常容易地扩展您的处理应用程序。

如果您对集成主题感兴趣,您可以访问企业集成站点并阅读 Gregor Hohpe 和 Bobby Woolf 关于该主题的一本非常好的书。您可以在提到的网站上找到它的链接。在其中,您会发现这两种方法的所有优点和缺点,并熟悉其他可用的方法。无论如何,消息传递绝对是不错的选择。

您可能会考虑使用骆驼框架作为上述模式的实现。

于 2012-07-26T09:29:52.843 回答