【官网直译】1. Spring Batch 介绍

本文翻译自 Spring Batch Introduction 基于4.2.4.RELEASE

SpringBatch 介绍

企业域内的许多应用程序都需要批量处理才能在关键任务环境中执行业务操作。这些业务操作包括:

  • 自动,复杂地处理大量信息,无需用户交互即可最有效地进行处理。这些操作通常包括基于时间的事件(例如月末计算,通知或通信)。
  • 定期应用非常大的数据集重复处理复杂的业务规则(例如,保险利益确定或费率调整)。
  • 从内部和外部系统接收的信息的集成,通常需要格式化,验证和以事务方式进行的处理到记录系统中。批处理用于每天为企业处理数十亿笔交易。

Spring Batch 是一个轻量级的,全方位的批处理框架,旨在支持开发对企业系统的日常运行至关重要的强大的批处理应用程序。Spring Batch 建立在人们期望的Spring框架特征(生产力,基于 POJO 的开发方法和普遍的易用性)的基础上,同时使开发人员在必要时可以轻松访问和利用更高级的企业服务。Spring Batch 不是一个调度框架。商业和开源空间中都有许多好的企业调度程序(例如 Quartz,Tivoli,Control-M 等)。它旨在与调度程序一起运行,而不是替换调度程序。

Spring Batch 提供了可重用的功能,这些功能对于处理大量记录至关重要,包括日志记录/跟踪,事务管理,作业处理统计信息,作业重启,跳过和资源管理。它还提供了更高级的技术服务和功能,这些功能通过优化和分区技术实现了超大量和高性能的批处理作业。Spring Batch 可用于简单的用例(例如,将文件读入数据库或运行存储过程)以及复杂的大量用例(例如,在数据库之间移动大量数据,对其进行转换等)。大量批处理作业可以高度可扩展的方式利用框架来处理大量信息。

背景

了解:background

使用场景

典型的批处理程序通常为:

  • 从数据库,文件或队列中读取大量记录。
  • 以某种方式处理数据。
  • 以修改后的形式写回数据。

【官网直译】1. Spring Batch 介绍

Spring Batch 自动执行此基本批处理迭代,从而提供了将一组类似的交易作为一组处理的能力,通常在脱机环境中无需任何用户交互。批处理作业是大多数 IT 项目的一部分,Spring Batch 是唯一提供可靠的企业级解决方案的开源框架。

业务场景:

  • 定期提交批处理
  • 并行批处理:作业的并行处理
  • 分阶段的企业消息驱动的处理
  • 大规模并行批处理
  • 失败后手动或计划重启
  • 相互依赖步骤(step)的顺序处理(扩展到工作流驱动的批次)
  • 部分处理:跳过记录(例如,回滚时)
  • 整批交易,适用于小批量或现有存储过程/脚本的情况

技术目标:

  • 批处理开发人员使用 Spring 编程模型:专注于业务逻辑,并让框架处理基础架构。
  • 在基础架构,批处理执行环境和批处理应用程序之间明确分离关注点。
  • 提供通用的核心执行服务作为所有项目都可以实现的接口。
  • 提供可以 开箱即用 的核心执行接口的简单和默认实现。
  • 通过在所有层面上利用 spring 框架,易于配置,定制和扩展服务。
  • 所有现有的核心服务应易于替换或扩展,而不会影响基础架构层。
  • 提供一个简单的部署模型,其架构 JARs 与使用 Maven 构建的应用程序完全分开。

Spring Batch 架构

Spring Batch 设计时考虑了可扩展性,并考虑了不同的最终用户群体。下图显示了支持最终用户开发人员的可扩展性和易用性的分层体系结构。

【官网直译】1. Spring Batch 介绍

这种分层的体系结构强调了三个主要的高级组件:Application(应用程序),Batch Core(核心)和 Batch Infrastructure(基础架构)。

  • 应用程序包含开发人员使用 Spring Batch 编写的所有批处理作业和自定义代码。
  • 批处理核心包含启动和控制批处理作业所需的核心运行时类。它包括实现 JobLauncherJobStep
  • Application和Core都建立在通用基础架构之上。该基础架构包含公用的读取器(readers)和写入器(writers)以及服务(例如RetryTemplate),应用程序开发人员(例如读取器 ItemReader 和写入器 ItemWriter)和核心框架本身(retry,这是它自己的库)都使用它们。

html#batchProcessingStrategy