|
当前版本仍在开发中,尚不被视为稳定版本。最新稳定版请使用 Spring Batch 文档 6.0.2! |
Spring Batch 简介
企业领域中的许多应用都需要通过批量处理,在关键任务环境中执行业务操作。这类业务操作通常包括:
-
对海量信息进行自动化、复杂化处理,并且在无用户交互的情况下以最高效率完成。此类操作通常包括基于时间触发的事件,例如月末结算、通知发送或对账通信。
-
在超大数据集上周期性、重复性地应用复杂业务规则,例如保险给付判定或费率调整。
-
将来自内部和外部系统的信息集成到记录系统中,这通常需要按事务方式完成格式化、校验与处理。企业每天都会依赖批处理来处理数十亿级别的交易。
Spring Batch 是一个轻量而完整的批处理框架,旨在帮助开发对企业系统日常运行至关重要的健壮批处理应用。它建立在开发者对 Spring Framework 一贯期待的特性之上,例如高生产力、基于 POJO 的开发方式以及整体上的易用性;同时,在有需要时,它也能让开发者方便地接入和使用更高级的企业级服务。Spring Batch 并不是调度框架。无论在商业还是开源领域,都已经存在许多优秀的企业级调度器,例如 Quartz、Tivoli、Control-M 等。Spring Batch 的定位是与调度器协同工作,而不是取代调度器。
Spring Batch 提供了处理大规模记录时所必需的可复用功能,包括日志与跟踪、事务管理、作业处理统计、作业重启、跳过策略以及资源管理。它还提供了更高级的技术服务与能力,能够借助优化和分区等技术支撑超大规模、高性能的批处理作业。你既可以将 Spring Batch 用于简单场景,例如把文件读入数据库或执行存储过程;也可以将其用于复杂、高吞吐场景,例如在多个数据库之间迁移和转换海量数据。对于高容量批处理任务,这个框架能够以高度可扩展的方式处理大量信息。
背景
尽管开源软件项目及其社区近年来更多地将注意力放在基于 Web 和微服务的架构框架上,但对于满足 Java 批处理需求的可复用架构框架,关注却明显不足。而在企业 IT 环境中,这类批处理需求始终存在。由于缺乏标准化、可复用的批处理架构,许多客户企业的 IT 团队不得不开发大量一次性、内部定制的解决方案。
SpringSource(现 VMware)与埃森哲正是为改变这一现状而展开合作。埃森哲在批处理架构实施方面拥有丰富的行业经验和实战技术能力,SpringSource 则具备深厚的技术积累,而 Spring 已被广泛验证的编程模型也为双方合作提供了天然且强有力的基础,能够共同打造高质量、贴近市场需求的软件,以填补企业 Java 领域的重要空白。两家公司都曾与许多客户合作,这些客户正在通过基于 Spring 的批处理架构方案解决类似问题。这些实践输入带来了宝贵的细节和真实约束,从而确保解决方案能够真正落地到客户面对的现实场景中。
埃森哲向 Spring Batch 项目贡献了此前专有的批处理架构框架,同时还投入了提交者资源,用于推进项目支持、功能增强以及既有特性的演进。埃森哲的这项贡献建立在数十年的批处理架构经验之上,这些经验横跨多代技术平台,包括大型机上的 COBOL、Unix 上的 C++,以及如今无处不在的 Java。
埃森哲与 SpringSource 的合作目标,是推动软件处理方法、框架和工具的标准化,让企业用户在构建批处理应用时能够持续采用一致的技术方案。希望为企业 IT 环境提供标准化、经过验证解决方案的公司和政府机构,都可以从 Spring Batch 中受益。
使用场景
一个典型的批处理程序通常会:
-
从数据库、文件或队列中读取大量记录。
-
以某种方式处理这些数据。
-
将处理后的数据以修改后的形式写回。
Spring Batch 将这种基础性的批处理迭代过程自动化,使系统能够在通常无用户交互的离线环境中,以集合方式处理相似事务。批处理作业几乎是大多数 IT 项目的一部分,而 Spring Batch 是少数能够提供健壮、企业级解决方案的开源框架之一。