浅谈Java批处理实现的10个关键点

浅谈Java批处理实现的10个关键点

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

  可测试性

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

  组件

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

  可观察性

  JSR-352 定义了批处理的元数据像 JobExecutions,JobInstances,StepExecutions 等等。应该有一个简单的能以图形化的方式查看这些数据或者起/停批处理任务。Spring Batch 提供了Spring Batch Admin 来实现这个功能。你也可以看看JMX提供的工具。

  社区化

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

  任务继承

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

  开源化

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

  安全性

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

  可伸缩性选项

  可伸缩性是很重要的,我在这里列到第8点才说是因为最重要的伸缩性选项-Local Partitioning 已经包含在JSR -352 里面了。但是还应该有更多的选择 ,例如Spring Batch 提供的 Multi-threaded Step,Remote Partitioning ,Parallel Step,Remote Chunking 等等选项,所以看看你的实现厂商有没有提供其他的伸缩性选项。

  可配置性

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

  可扩展性

  扩展性是一个非常重要的参考点,但是我把它放在最后一位是因为JSR-352 的 API 已经提供了基本上全部的用于可扩展的接口,例如启动和停止任务,查看批处理元数据和编写自有组件等等。但是,可能你还是会需要没有被包含在JSR-352标准里面的功能。作者:网店系统

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值