【叶凡网络】Java选择正确的批处理实现的几个关键点

2014-03-04 11:19:37 | 新闻来源:叶凡网络 | 点击量:781

有些范围太广太淡,10条参考点。有些又是很必要很实用的重要性的排序是基于我一些大公司使用SpringBatch经验。可能会有自己的排序或者有些其他想法,但是得供认上面得这些参考点都是很重要的选择JSR352实现厂商应该慎重因为你可能会用很久。也希望这些参考点在需要做出选择的时候能帮助你,JSR-352一个Java批处理的规范。该标准在今年发布,您可能已经知道。并被包含在JEE7之中,这意味着,所有的JEE7应用服务器都会有批处理的能力。正如我上一篇文章中指出,即使您的应用服务器是固定的但是您依旧可以选择JSR-352实现。

那么您应该怎么样选择呢?当然,既然您可以选择。这和JSR-352提供了什么没有关系,因为所有的实现都会有这些功能。应该根据那些超出规范之外功能来进行选择。本文中,基于之前在一些有代表性的公司例如平安公司和银行,中实现SpringBatch一些经验,整理了一些可以作为参考的规范。现在而言没有严格的JSR-352实现,即使是SpringBatch也还有一段距离,因此现在还没有直接比较实现方案的可能。但是依旧可以看看各个实现在每个参考规范上面的比拟(下面的规范依照重要性来排序)

可测试性,Junit集成测试在不要安排到应用服务器商应该可以跑批处理任务。开发的周期性和测试覆盖的潜力都会提高很多。

可配置性,因此确保了编译期间很多细节问题的处置而且在任意IDE下支持重构。这个参考点对执行批处置任务不是很重要,JSR352定义了基于XML任务设置模型。SpringBatch提供了基于Java类型平安的配置方式。所以我放在第九位,但是也是个值得拥有的功能点。

可扩展性,但是把它放在最后一位是因为JSR352API已经提供了基本上全部的用于可扩展的接口,扩展性是一个非常重要的参考点。例如启动和停止任务,检查批处置元数据和编写自有组件等等。但是可能你还是会需要没有被包含在JSR352规范里面的功能。

组件,一个干净的批处理模型是很好的但是为了快速开发批处理任务你需要依赖他人写好的稳定的组件。SpringBatch有很多的这类组件 例如 ItemReadItemWritPartitionHandl等等对应各类数据和环境。

可观察性,JSR-352定义了批处理的元数据像 JobExecutJobInstancStepExecut等等。应该有一个简单的能以图形化的方式检查这些数据或者起/停批处理任务。SpringBatch提供了SpringBatchAdmin来实现这个功能。也可以看看JMX提供的工具。

开源化,咱们也别老调重弹了个人喜欢开源的东西,开源到底好不好是个争论了很久问题。因为代码的实现方式对我来说是比较重要的所以我最起码能检查每一个我选择的开源产品的实现代码。

平安性,而且不是所有人能看到批处理的元数据。平安一直都是很重要的应该要具备开始和停止任务的用户控制。

社区化,一个活跃的论坛和Stackoverflow上的活动来检查JSR352实现厂商的产品普及度。一个友好的开发者社区能很大的提高生产能力。看看Googl搜索结果。

任务继承,但是实际上所有SpringBatch项目都在用。大公司里面都有一些通用规则,这个参考点看起来不是很重要。例如协议监听器,日志初始化,退出代码转换等等等等。开发人员不应该自己添加适当的监听器,应该从父任务里简单的继承过来。然后在很多个类似的任务中用一个父任务来包含所有的公用组件这个功能听起来就比较有道理了

可伸缩性选项,所以看看你实现厂商有没有提供其他伸缩性选项。可伸缩性是很重要的这里列到第8点才说是因为最重要的伸缩性选项-LocalPartit已经包括在JSR352里面了但是还应该有更多的选择 例如SpringBatch提供的MultithreadStepRemotPartitParallelStepRemotChunk等等选项。

 

上一篇:【叶凡网络】意大利维护移民权利,多地举行多项活动 下一篇:【叶凡网络】写新时代的雷锋故事,勉励他们以实际行动书