Spring Batch批处理框架初探

Posted 不去天涯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Batch批处理框架初探相关的知识,希望对你有一定的参考价值。

关于spring batch

spring batch就是一个轻量级的批处理框架,他的轻量级是相对于MapReduce、Spark之类的集群批处理架构来说的。虽然spring batch支持机器集群,但是多用的是单机的多线程并行处理。

大家都知道MapReduce适合超大型数据量的批量处理,对于几分钟,几十秒钟的处理就不要放到Mapreduce上了,这只会让处理时间更长,因为MapReduce的任务分配和启动过程就要消耗1-2分钟。

另外对于一些不是特别复杂的批处理,如果手头没有Hadoop这样的集群可用,而且一台电脑多线程处理就足够应付时,spring batch会是一个很好的选则。(当然,如果写一个简单的批处理脚本够用,那么,首选批处理脚本。)

但是,由于官方的教程不太适合初学者不快速的上手,这篇教程是大概两个礼拜时间集中看spring batch相关内容的总结。这里整理的顺序将会尽量从适合学习和入门。

spring batch能做什么?

spring batch用来做批处理,批处理最早基本用来指脚本,比如批处理脚本,就是把一系列的操作写到一个bat或者sh文件里面,一次调用,脚本里面的一系列操作就按照顺序逐条指令执行了。

也就是说,批处理首先是能够包含一系列的处理指令,并且可以指定顺序,然后这些指令按照指定的顺序执行。然而现如今是一个分布式的时代,和一个水平扩展远大于单机性能的时代,大多优秀的产品都在支持并行或者集群,spring batch在这两方面支持的怎么样呢?

spring batch具备工作流引擎的相似功能,可以在xml配置文件中配置一系列相互关联的步骤。你需要配置一个任务(Job),在任务里面定义多个Step,Step和Step之间通过next标签指明前后关系。

同时,他支持同一个任务的多线程、多进程、多服务器处理。接下来把相关资料分类整理如下:

基本使用

sping batch的最简单程序

在这个最简单的示例中,你会看到组成Job的Step可以是自定义的一个tasklet,也可以是使用spring batch提供的标准的ItemReader、ItemProcesser、ItemWriter组成的一个tasklet。

不同文件类型的读写示例

spring batch默认支持文本文件、XML文件、数据库的读和写,提供了内置的ItemReader和ItemWriter。

配置复杂的业务流程

结合quartz或者spring schedule定时触发

quartz+spring batch做到定时触发批处理任务

spring schedule + spring batch定定时触发-英文

多文件读入

Spring Batch MultiResourceItemReader example

spring batch并行处理

spirng batch并行与扩展

这一篇是中文的,写的其实不如官网清楚,下面是官网的地址:

Scaling and Parallel Processing

事件监听

SPRING BATCH 错误通知机制

spring batch admin管理job运行

spirng batch admin工具介绍

文章写的不是特别详细,但是已经给出了足够的线索,也就是需要把JobRepository定义成数据库存储形式。

配置JobRepository-官网

以上是关于Spring Batch批处理框架初探的主要内容,如果未能解决你的问题,请参考以下文章

《spring batch 批处理框架》第9、10、11章

Spring框架——批处理(batch)和事务(Transaction)

Spring 学习总结(34)——Spring Batch 批处理框架使用总结

Spring Batch 批处理框架,真心强

Spring Batch 批处理框架,真心强

Spring Batch 批处理框架,真心强