Spring Batch及批处理(第一篇)

  • 1 什么是批处理
  • 2 批处理典型的应用场景
  • 3 什么是Spring Batch
  • 4 Spring Batch 的特性



SpringBatch 是一个大数据量的并行处理框架。通常用于数据的离线迁移,和数据处理,⽀持事务、并发、流程、监控、纵向和横向扩展,提供统⼀的接⼝管理和任务管理;SpringBatch是SpringSource和埃森哲为了统一业界并行处理标准为广大开发者提供方便开发的一套框架。

1 什么是批处理

什么是批处理,我们可以从一下几方面来进行理解:

  • 有限数据(Finite data):批处理是对有限数据的处理,相对应的就是无限数据(non-infinite),即数据可以处理到完成。
  • 无交互(No interaction):什么叫做无交互?例如在软件开发中,一个 web request 或 发送一个 message,都是系统之间或是Client与系统之间的交互。而 Batch processing 批处理程序运行在服务器上,不需要交互。
  • 无中断(No interruption):一个批处理从开始到结束,它没有外界中断。也不排除批处理的过程中,发生错误或异常,但 Spring Batch 提供了相应的批处理容错机制。

2 批处理典型的应用场景

  • ETL:Extract-Transform-Load,数据的抽取,转换和加载;
  • Report:报表;
  • Data Science:数据科学中提到的预测模型 predicative model;
  • BigData:大数据中的 Hadoop/Spark 处理框架
  • 非交互性的应用都可以考虑使用批处理去实现,而 Spring Batch 就是其中一种比较成熟的解决方案。

3 什么是Spring Batch

Spring Batch 是 Java 中领先的批处理框架,它是来自埃森哲的一个开源项目,与 Spring 合作,同时 Spring Batch 也是 JSR-352 (Java Specification Requests,Java 规范请求)的一个标准来源。

4 Spring Batch 的特性

  • 工作流状态机(Job flow state machine):其中的 Job 是由相互独立的 step 来构成的,step 可以在不同的状态之间进行转换。
  • 事务处理(Transaction processing)
  • 声明式 IO(Declarative IO):提供了非常易用的输入输出支持,从而使程序员只关注与业务逻辑
  • 容错处理(Error handling):批处理一般都是离线运行(Offline processing),在夜间启动。这个批处理框架提供了一些容错机制,例如:skip,并记录一些错误的日志。
  • 可扩展机制(Scalability ability):分布式处理以及例如第三方框架Hadoop框架的集成。
    Spring Batch 建立在 Spring 框架之上的,所以可以使用 Spring 框架的一些特性,例如:IoC、Testing、Spring Boot…