写点什么

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

  • 2008-07-04
  • 本文字数:1761 字

    阅读完需:约 6 分钟

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 是 SpringSource Accenture 合作的结果。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

2008-07-04 01:1712763
用户头像

发布了 150 篇内容, 共 41.0 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

通过Dao投票STI的销毁,SeekTiger真正做到由社区驱动

鳄鱼视界

CodeTON Round 1 (Div. 1 + Div. 2, Rated, Prizes)(A-C)

KEY.L

7月月更

值得收藏的ArkUI框架三方组件【系列1】

坚果

HarmonyOS Open Harmony 7月月更

带领全网朋友,完成粉笔登录加密分析,再次换种玩法

梦想橡皮擦

Python 爬虫 7月月更

解读《深入理解计算机系统(CSAPP)》第12章并发编程

小明Java问道之路

Java 后端 并发 csapp 7月月更

软核微处理器

贾献华

7月月更

SDL图像显示

柒号华仔

7月月更

数据库的主从分离

ES_her0

7月月更

常见链表题及其 Go 实现

宇宙之一粟

链表 7月月更

初学者如何快速的上手Linux命令,这34条新手必会的命令一定得会!

wljslmz

Linux 7月月更

通过Dao投票STI的销毁,SeekTiger真正做到由社区驱动

威廉META

Block 的分类

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

关于目前流行的 Redis 可视化管理工具的详细评测

宁在春

redis 7月月更 Redis 可视化工具

Android实现无序树形结构图,类似思维导图和级联分层图(无序,随机位置)

芝麻粒儿

android 7月月更

为什么加工数据指标

奔向架构师

数据仓库 7月月更

zookeeper-认识watcher

zarmnosaj

7月月更

mysql数据表查询

乌龟哥哥

7月月更

队列的链式表示和实现

秋名山码民

算法 7月月更

【萌新解题】三数之和

面试官问

面试 LeetCode

通过Dao投票STI的销毁,SeekTiger真正做到由社区驱动

股市老人

深度学习-多维数据和tensor

AIWeker

7月月更 多维数据

LeetCode 242:有效的字母异位词

武师叔

7月月更

Android热更新调研汇总

沃德

android 程序员 7月月更

Android ANR和OOM

沃德

android 程序员 7月月更

函数初认识-上

芒果酱

C语言 7月月更

还在为处理事务烦恼吗,要不试试Spring是如何处理业务的

Java学术趴

7月月更

Flutter开发:运行flutter upgrade命令报错Exception:Flutter failed to create a directory at…解决方法

三掌柜

7月月更

分库分表

ES_her0

7月月更

jQuery 操作元素

Jason199

jquery js 7月月更

【Docker 那些事儿】容器网络(上篇)

Albert Edison

Docker Kubernetes 容器 云原生 7月月更

JavaScript DOM编程艺术笔记

程序员海军

前端 DOM 7月月更

Spring Batch:简化批处理和离线处理的开发_Java_Ryan Slobojan_InfoQ精选文章