由于在某厂实习的时候主要做的是后台批处理模块的工作,因此接触到了SpringBatch这个批量处理工具,Spring及其子项目实在是太强大了,无所不能。
由于批量处理这个工作并不是属于大部分项目会使用到的,因此市面上的书籍并不是特别多。
这里推荐一个我认为还不错的入门书籍:《SpringBatch 批处理框架》刘相编著
在信息系统中,联机和批处理是计算机处理的两种基本模式,前者需要快速反应,超时中断,密集并发,而后者处理时间较长,异常需要支持重做,通常以顺序执行。随着大数据等新技术的引用,批处理的模式又称为热点,在腾讯,阿里每日的批处理作业可达到百万量级的水平。
SpringBatch对编写批处理程序本身的特性进行了抽象。通过将批处理程序分解为Job和JobStep两个部分,将处理环节定义为:
1、数据读(Reader)
2、数据处理(Processor)
3、数据写(Writer)
将异常处理机制归结为跳过、重试、重启三种类型。
一个典型的批处理应用场景:
系统A从数据库获取数据,经过业务处理后,到处系统需要的数据到文件中,系统B读取该文件,经过处理后,最后存放在数据库中,通常情况下该动作是在每天凌晨进行的,这时候对系统的性能影响较小。
SpringBatch核心架构:
SpringBatch核心架构分为3层:应用层、核心层、基础架构层。
应用层包括所有的批处理作业,通过Spring框架管理程序员自定义的代码,核心层包括SpringBatch启动和控制所需要的核心类,如Joblauncher,Job和Step等。应用层和核心层建立在基础架构层智商,基础架构层提供通用的读,写和服务处理,可以被应用层和核心层使用。SpringBatch的三层体系结构使得SpringBatch框架在不同的层级进行扩展,避免不同层级间的影响。
本篇博客只是简单介绍下SpringBatch这个批处理框架的应用场景和基本架构,后面将会通过一个HelloWorld入门实例来详细讲解整个SpringBatch的执行过程。