Spring Batch:简化批处理和离线处理的开发

阅读数:10261 2008 年 7 月 4 日

话题:Java语言 & 开发架构

Spring Batch项目是一个轻量级的全面的基于 Spring 的批处理框架,最近发布了1.0 版。InfoQ 采访了其项目领导人David Syer,以了解该版本的相关信息以及它为 Spring 社区提供了些什么。

Syer 将 Spring Batch 描述为这样一个框架,它能够管理批处理和离线处理,从而使应用开发者将注意力集中在业务逻辑上。Syer 指出了 Spring Batch 带给批处理界的两个新观点:编写可以单独测试的轻量级应用代码的能力;一个执行、管理和监控离线处理结果的强大的框架。

Syer 认为这一版本的主要特征如下:

  • 基础设施——这一基础设施提供了对可重用性的支持,对重复和重试的低层支持,对事务同步的支持,以及对读写普通文件、XML 和数据库的支持
  • 核心——这是一个瘦 API,允许启动和管理批处理工作,提供需要操作的所有特性
  • 扩展——这是核心 API 的实现,为批处理提供了一个运行时 / 执行环境
  • 全套例子应用——Spring Batch 1.0 提供了一个例程模块,其中包含了几个例子应用,展示了 Spring Batch 在操作上的全部主要特征

Syer 还给出了 1.0 版中所有可用特性的详细描述。

一个能使 Spring Batch 与 Spring Portfolio 的其他项目区分开来的东西是,Spring Batch 是 SpringSourceAccenture合作的结果。Syer 告诉 InfoQ 这种合作对于代码库的贡献在数量和深度上都带来了巨大好处。这种合作“非常成功”,Accenture 把它们最好的资源分配到了这个项目上。Syer 也细心地指出 Spring Batch 与 Spring Portfolio 里的每个项目一样,都是以同样的方式运行并且支持同样的标准。

Spring Batch 的开发过程相对较长,从 Subversion 库中可以看出早在 2007 年 1 月它就开始了。Syer 解释了其中的原因:

快点发布一个最终版本当然是好事情了,但是实际上我们一直按照 2008 年 3 月来制定结束计划,以与 Spring Portfolio 的其它产品和 SpringSource 的产品发布时间相符。我们在设计公共 API 的时候非常仔细,这样在将来的开发计划中不需要对其做出变化。整体产品质量也是主要的考虑因素——我们是完美主义者。

这就是说,我们产品的功能成熟性和丰富性可以用几个项目来证明,它们已经在其产品中使用了我们的里程碑发布。

当被要求就这些产品做更详尽的描述时,Syer 说道:

  • 作为整个应用更新项目的一部分,欧洲一个大的卫生保健机构已经将其大量主机批处理移植到了 Spring Batch 上。这是相当普遍的模式和需求,因为当今工作市场上可以很容易找到优秀的 Spring 开发者,而很难找到好的 COBOL 程序员。该客户使用 Spring Batch XML 流及映射功能,并且在可能重用在线处理已有的一部分工作的地方,把 Hibernate 用于业务对象持久化。
  • 一个大体育组织在比赛进行的时候使用户可以实时跟踪更新的成绩和实况的统计。他们开发了一个系统,考虑到快速开发,只需通过配置就可进行文件读取。模块化方法还使工作运行得更快,每 5 秒钟启动一次
  • 美国一个大的州政府有一个 IT 更新项目,使用 Java 更换其主机批处理工作。其目标是处理失业索赔。这里的挑战包括遗留主机和政府特定的数据格式,以及关于部分工作失败的严格规则。在这种情况下,批处理工作开发只是更大程序中的一部分。

Syer 还罗列了实现应用可能要处理的三种工作:

  • 营业结束处理,比如报表、订单处理、和财务对帐单
  • 导入和导出处理,比如表单处理、清单导入、配置导出
  • 大规模输出工作,比如 email 操作和财务决算

当问到 Spring Batch 未来的计划时,Syer 说道:

我们正在为单个进程(可能是多线程的)在 1.0 中的执行提供一个卓越的平台。将来完全有可能将众多的多进程模型移植到多种平台上,我们已经非常谨慎的预期在 1.0 代码库中将做出这些修改。构建在我们提供的平台上,它已经提供了大多我们所需的数钩子(hook)和数据结构,我们还打算仔细思考一下批处理应用关于可用性和可部署性方面的问题。监控和管理批处理应用在现实生活中是十分重要的,我们认为我们可以有多种方式给这一领域增加附加价值。连同其它 Spring portfolio 项目一起,我们认为 OSGi 是我们未来策略的关键部分(1.0 将被打包成 OSGi bundles,但是这只是开始)。

Syer 还对那些为 Spring Batch 做出了贡献的人们表示感谢,无论他们是通过论坛、错误报告、讨论还是编码的形式,还说反馈的质量和数量都让他们感到“印象深刻”。

查看英文原文:Spring Batch: Simplified Development of Batch and Offline Processes