InfoQ

新闻

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

作者 Ryan Slobojan译者 宋玮 发布于 2008年7月4日 上午1时17分

社区
Java
主题
企业架构
标签
Spring Batch

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

相关赞助商

InfoQ中文站Java社区,关注企业Java社区的变化与创新,通过新闻、文章、视频访谈和演讲以及迷你书等为中国Java技术社区提供一流资讯。

没有回复

回复

独家内容

从卓越工程角度看微软中国开发团队的成长

开发团队的成长离不开优秀的人才,简捷有效的流程和高效率工具这三个卓越工程系统中的重要因素。本文作者从这三个因素分析了微软中国开发团队是如何“从优秀到卓越”的。

利用Ruby简化你的Java测试

本文是Productive Java with Ruby系列文章的第一篇,我将从单元测试这个话题开始,让Java的开发人员能够在实际工作中利用Ruby提高工作效率。

与赵进聊SaaS

InfoQ中文站有幸与阿里软件的首席架构师赵进在一起探讨了SaaS的相关话题,包括SOA和ASP与SaaS的异同、云计算、SaaS的前景、它的关键技术、技术瓶颈等等。

在ESB中选择路由还是编配?

在这篇文章中,Adrien Louis和Marc Dutoo在一个典型的ESB场景中讨论了编配和路由的区别和优缺点。他们讨论了几种连接服务的方法,从使用如自定义路由这样的低级别方法,到使用如工作流和编配这样面向业务的高级别方式,并总结说不存在“一边倒”的解决方案。

分布式系统中的一致性和可用性

本文是根据7月26日InfoQ中文站在杭州举行的QClub活动(第三期)后半程小组讨论总结而成。主要内容包括如何在SOA系统中实现服务编排,如何保证分布式系统中的一致性和可用性,以及如何在实施SOA的过程中控制接口的粒度等。

虚拟化导论

人们很容易想当然的以为虚拟化技术仅仅应用于服务器。而在现实中,虚拟化这一苏醒的概念正被运用于各个层面,其中包括网络,存储以及应用基础架构。在这篇导论中,InfoQ将深入每个方面,详尽向您描述虚拟化技术的运用以及其优点与不足。

用户故事估算技巧

作为开发者,同时也是ThoughtWorks的咨询师,Jay Fields总结了自己估算用户故事的有效技巧。

InfoQ案例研究:纳斯达克市场回放

在这篇案例研究中,InfoQ对Adobe AIR和Amazon的简单存储服务(Simple Storage Service ,S3)在NASDAQ市场回放程序(NASDAQ Market Replay)中的应用进行了详细的分析。