我们有单独的Java实例程序处理原始weblog:
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 ???
有任何问题请帮助我。
答案 0 :(得分:2)
事件驱动的解决方案当然是一个不错的选择,因此JMS可能是一个很好的解决方案。
但是你应该记住,如果你的消费者无法跟上生产者并且你将使用持久交付,消息将存储在你的硬盘上,这将导致磁盘IO。但我认为这不会是一个问题,因为你总是可以增加并发消费者的数量,甚至可以使用集群(例如,使用ActiveMQ配置非常容易)以跟上负载。
总而言之,我认为JMS可以很好地解决您的问题,因为您不需要主动轮询文件系统以进行更改,并且可以非常轻松地扩展您的处理应用程序。
如果您对整合主题感兴趣,可以访问enterprise integration site并阅读Gregor Hohpe和Bobby Woolf关于此主题的非常好的书。您可以在上述网站找到它的链接。在其中,您将找到两种方法的所有优点和含义,并熟悉其他可用的方法。无论如何,消息传递绝对是一种很好的方式。
您可以考虑使用camel framework作为提及模式的实现。