java-存在哪些方式来分发异步批处理任务?
作者:互联网
我目前正在研究存在哪些Java兼容解决方案来满足我的要求,如下所示:
>基于计时器/可调度的任务以进行批处理
>分布式,从而提供了水平缩放的能力
>弹性,请不要使用SPF
这些任务的性质(大量XML生成以及向基于Web的接收节点的传递)意味着使用Quartz之类的东西在单个服务器上运行它们是不可行的.
我听说过像Hadoop和JavaSpaces这样的技术,它们已经有效地解决了问题的扩展性和灵活性.不知道这些技术是否完全符合我的要求,很难知道还有哪些其他技术可能非常适合.
我真的想知道在这个领域中的人们认为可以选择什么,每个人如何发挥自己的优势,或者比其他人更适合某些问题.
注意:值得一提的是,可调度性可能是我们目前工作方式的后遗症.是的,有些任务应该在某些时候执行.在没有设定时间的要求时,它也已用于限制吞吐量.
解决方法:
异步总是让我想到JMS.将请求消息发送到队列;将MessageListener从池中拔出进行处理.
这可以扩展,因为队列和侦听器可以位于远程服务器上.可以配置侦听器线程池的大小.您可以为不同的任务使用不同的侦听器.
更新:您可以通过群集和负载平衡避免出现单点故障.
您可以使用ActiveMQ(开放源代码),JBOSS(可用开放源代码版本)或任何Java EE应用服务器免费获得JMS,因此预算不是一个考虑因素.
除了使用Java之外,还没有锁定,因为您正在使用JMS.
我建议使用Spring消息驱动的POJO来做到这一点.当然,社区版是开源的.
如果这样做对您没有帮助,请查看Spring Batch和Spring Integration.这两个都可能有用,并且社区版本是开源的.
标签:asynchronous,batch-processing,distributed,java 来源: https://codeday.me/bug/20191210/2101180.html