java-存在哪些方式来分发异步批处理任务?

我目前正在研究存在哪些Java兼容解决方案来满足我的要求,如下所示:

>基于计时器/可调度的任务以进行批处理
>分布式,从而提供了水平缩放的能力
>弹性,请不要使用SPF

这些任务的性质(大量XML生成以及向基于Web的接收节点的传递)意味着使用Quartz之类的东西在单个服务器上运行它们是不可行的.

我听说过像Hadoop和JavaSpaces这样的技术,它们已经有效地解决了问题的扩展性和灵活性.不知道这些技术是否完全符合我的要求,很难知道还有哪些其他技术可能非常适合.

我真的想知道在这个领域中的人们认为可以选择什么,每个人如何发挥自己的优势,或者比其他人更适合某些问题.

注意:值得一提的是,可调度性可能是我们目前工作方式的后遗症.是的,有些任务应该在某些时候执行.在没有设定时间的要求时,它也已用于限制吞吐量.

解决方法:

异步总是让我想到JMS.将请求消息发送到队列;将MessageListener从池中拔出进行处理.

这可以扩展,因为队列和侦听器可以位于远程服务器上.可以配置侦听器线程池的大小.您可以为不同的任务使用不同的侦听器.

更新:您可以通过群集和负载平衡避免出现单点故障.

您可以使用ActiveMQ(开放源代码),JBOSS(可用开放源代码版本)或任何Java EE应用服务器免费获得JMS,因此预算不是一个考虑因素.

除了使用Java之外,还没有锁定,因为您正在使用JMS.

我建议使用Spring消息驱动的POJO来做到这一点.当然,社区版是开源的.

如果这样做对您没有帮助,请查看Spring BatchSpring Integration.这两个都可能有用,并且社区版本是开源的.

上一篇:mysql-当事件循环正在等待数据库操作时,如何处理对nodejs服务器的传入请求


下一篇:如何从其他线程优雅地访问Android View?