浅谈Java批处理实现的10个关键点
来源:互联网 发布:淘宝深度流量互踩 编辑:程序博客网 时间:2024/09/21 08:14
浅谈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标准里面的功能。作者:网店系统
- 浅谈Java批处理实现的10个关键点
- Java 实现断点续传的关键几点
- 浅谈做好个人时间管理的10个关键
- Java String的关键点
- 浅谈JDBC连接SQL Server 2005的几个关键点
- 学好Java关键的几点方法!
- 学好Java关键的几点
- java基础的关键点记录
- JAVA代码一些关键点的解析
- Java学习关键点
- java问卷调查关键点
- 高质量代码的4个关键点
- 体验式网站设计的41个关键点
- 用户需求提取,应该了解的9个关键点
- 广告效果分析的3个关键点
- 广告效果分析的3个关键点
- 12个机器学习的关键点及阐释
- 软件配置管理提高业务价值的7个关键点
- struts2系列九之代码方式验证错误
- WGS-84 到 GCJ-02 的转换(即 GPS 加偏)
- struts2标签的iterator下标
- Android HttpClient介绍
- 物理DG与逻辑DG的区别与逻辑DG同步异常处理方法
- 浅谈Java批处理实现的10个关键点
- Android native线程
- svn的安装与配置
- Android 之 ServiceManager与服务管理, 以及SystemServer核心进程
- 第十六周上级项目3--填空学指针
- 指针篇之四 借你一双慧眼,把它类型看个清楚明白
- EasyUI 之datagrid 使用
- c语言静态变量和静态函数
- 类中的函数指针和函数对象