1、 北京BEIJING Publishing House of Electronics Industry 刘相 编著 Spring Batch 批处理框架 内 容 简 介 本书全面、系统地介绍了批处理框架 Spring Batch,通过详尽的实战示例向读者展示了 Spring Batch 框架对大数据批处理的基本开发能力,并对框架的架构设计、源码做了特定的剖析;在帮助读者掌握 Spring Batch 框架基本功能、高级功能的同时,深入剖析了 Spring Batch 框架的设计原理,帮助读者可以游刃有余地掌握 Spring Batch 框架。本书分为入门篇、基本篇和高级篇三部分。入门篇介绍了批
2、处理、Spring Batch 的基本特性和新特性,快速入门的 Hello World 等内容引领读者入门,从而进入数据批处理的世界。基本篇重点讲述了数据批处理的核心概念、典型的作业配置、作业步配置,以及 Spring Batch 框架中经典的三步走策略:数据读、数据处理和数据写,详尽地介绍了如何对 CVS 格式文件、JSON 格式文件、XML 文件、数据库和 JMS 消息队列中的数据进行读操作、处理和写操作,对于数据库的操作详细介绍了使用 JDBC、Hibernate、存储过程、JPA、Ibatis 等处理。高级篇提供了高性能、高可靠性、并行处理的能力,分别向读者展示了如何实现作业流的控制,
3、包括顺序流、条件流、并行流,如何实现健壮的作业,包括跳过、重试和重启等,如何实现扩展作业及并行作业,包括多线程作业、并行作业、远程作业和分区作业等,从而实现分布式、高性能、高扩展性的数据批处理作业。本书适合需要具体使用批处理作业、大数据处理的开发人员,设计人员和架构师,对于企业中存在大量作业的运维人员亦有一定的参考价值。未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。版权所有,侵权必究。图书在版编目(CIP)数据 Spring Batch 批处理框架刘相编著.北京:电子工业出版社,2015.2 ISBN 978-7-121-25241-9 .S .刘 .数据处理 .TP274 中国版本
4、图书馆 CIP 数据核字(2014)第 302744 号 策划编辑:孙学瑛 责任编辑:徐津平 特约编辑:顾慧芳 印 刷:三河市双峰印刷装订有限公司 装 订:三河市双峰印刷装订有限公司 出版发行:电子工业出版社 北京市海淀区万寿路 173 信箱 邮编 100036 开 本:787980 1/16 印张:25.25 字数:582 千字 版 次:2015 年 2 月第 1 版 印 次:2015 年 2 月第 1 次印刷 印 数:3000 册 定价:69.00 元 凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888。质量投
5、诉请发邮件至 ,盗版侵权举报请发邮件至 。服务热线:(010)88258888。批处理编程之美 这是一部论述批处理程序编程的书。在信息系统中,联机和批处理是计算机处理的两种基本模式,前者快速响应、超时中断、密集并发,后者处理时间长、异常需要支持重做、通常以顺序执行。早期的计算机系统多采用批处理的处理模式,客户机/服务器架构的产生让联机模式越来越多地被采用,但批处理模式一直在信息系统中起着重要作用,随着 OLAP、大数据等新技术的应用,批处理的处理模式又成为热点,例如在传统银行 IT 系统中每日动辄运行上万个批处理作业,在互联网应用中,腾讯、阿里每日的批处理作业可达百万量级的水平。编程之美,美在
6、架构,架构之美,美在抽象,只有具备充分理解复杂业务场景的格局,才能进行将复杂问题做简单化的抽象。同联机模式汗牛充栋的著作、框架相比,批处理模式的抽象不多,著名的 MapReduce 就是其中之一,MapReduce 将大批数据的处理过程进行了抽象,而 Spring Batch 则是对编写批处理程序本身的特性进行了抽象。通过将批处理程序分解为Job 和 Job Step 两个部分,将处理环节定义为数据读、数据处理和数据写三个步骤,将异常处理机制归结为跳过、重试、重启三种类型,将作业方式区分为多线程、并行、远程、分区四大特征,正所谓增一分则肥,减一分则瘦。类似之美,Spring 系列项目还有很多,
7、例如 Spring Framework 对依赖注入的抽象,Spring integration 中利用消息、队列、处理器三个概念的组合对集成模式的抽象,都让我叹为观止。当相相递给我他的新作时,我吃了一惊,惊在他“悄无声息”地完成了这样一个大部头作品,迫不及待地有一种先睹为快的冲动。我发现,书中通过对 Spring Batch 本身的论述,让我体会到了 Spring Batch 的精髓,也更加深刻地理解了批处理编程模式,还看到了相相对信息系统中如何使用这一框架的见解,毕竟信息系统中的批处理程序,不仅仅是一个框架,还需要包含更多的管理、运维方面的流程、制度与平台。近年来,我看到很多企业都在构建集中
8、的批处理平台,管理大量出现的批处理作业,也期待相相能有更多这方面的分享。普元 CTO 焦烈焱 2015 年 1 月 相相为本书作者刘相的简称。前 言 信息时代,数据是现代企业最宝贵的核心资产,是企业运用科学管理、决策分析的基础。截至目前,国内大多数企业已经完成了 OLTP(联机事务处理)的业务系统和办公自动化系统,用来记录事务处理的各种相关数据。据统计,企业的数据每年都在成倍增长,企业如能充分利用这些数据会带来巨大的商机。但目前企业通常所关注的数据仅占总数据量的 5%左右,企业没有最大化地利用已经存在的数据资源,导致浪费了更多的时间和资金,同时也失去了制定关键商业决策的最佳契机。于是,企业如何
9、通过各种技术手段,并把数据转换为信息、知识和商机已经成为提高其核心竞争力的主要手段。而数据批处理则是达成上述目标的一个主要技术手段,通过数据批量处理,可以完成数据的加载、抽取、转换、清洗等功能,进而支撑企业的各种数据分析。2012 年底,笔者有幸接手某银行批处理项目,首次接触 Spring Batch 批处理框架,深入学习 Spring Batch 框架后发现:Spring Batch 框架的架构设计清晰和优雅,其功能完备,具有无所不在的扩展能力、丰富的业务组件,并且采用业务与技术分离的设计思想。笔者通过近半年多的学习,通读了官网提供的所有文档,深入学习了原版书籍 Spring Batch I
10、n Action。在大数据时代,批处理框架在金融、电信、大型制造业等应用非常广泛。在学习的过程中,笔者了解到同事、网络上有不少朋友苦于没有中文版的 Spring Batch 框架介绍资料,于是萌生出写一本 Spring Batch 框架中文版介绍图书的想法,希望能够帮助国内的读者快速地掌握该框架。自 2013 年年中起笔者开始构思本书的大纲,在繁忙工作之余坚持每周完成部分章节内容,前后历时 1 年多时间完成书稿编写工作。在此感谢妻子 Phyllis 给予我充足的时间、感谢可爱女儿 Rachel 给我带来的巨大欢乐动力。本书主要的目的是全面、系统地介绍批处理框架Spring Batch,通过详尽
11、的实战示例向读者展示了 Spring Batch 框架的基本开发能力,并对框架的架构设计、源码做了特定的剖析;在帮助读者掌握该框架基本功能、高级功能使用的同时,深入剖析 Spring Batch 框架的设计原理,帮助读者可以游刃有余地掌握 Spring Batch 框架。本书分为入门篇、基本篇、高级篇三个部分,从基本的入门篇讲起,通过介绍批处理、Spring Batch 基本特性、新特性、快速入门的 Hello World 等内容引领读者入门,进入批处理的世界。之后的基本篇,重点讲述了批处理的核心概念、典型的作业配置、作业步配置以及Spring Batch 框架中经典的三步走策略:数据读、数据
12、处理、数据写,详细介绍了如何对分隔符类型文件、定长类型文件、JSON 格式文件、复杂类型格式文件、XML 文件、数据库、JMS VI Spring Batch 批处理框架 消息队列中的数据进行读、处理、写操作,对于数据库的操作详细介绍了使用 JDBC、Hibernate、存储过程、JPA,Ibatis 等处理。为了能够让读者更深入地了解 Spring Batch 框架,高级篇提供了高性能、高可靠性、并行处理的能力,分别向读者展示如何实现作业流的控制包括顺序流、条件流、并行流,如何实现健壮的作业包括跳过、重试、重启等,如何实现扩展作业及并行作业包括多线程作业、并行作业、远程作业、分区作业等。本书
13、适合需要具体使用批处理框架 Spring Batch 的开发人员、设计人员、架构师,对于企业中存在大量作业的运维人员亦有一定的参考价值。编 者 2014.12.23 于上海浦东 目 录 第1篇 入门篇 第 1 章 Spring Batch 简介.2 1.1 什么是批处理.2 1.2 Spring Batch.3 1.2.1 典型场景.3 1.2.2 Spring Batch 架构.4 1.3 Spring Batch 优势.4 1.3.1 丰富的开箱即用组件.5 1.3.2 面向 Chunk 的处理.5 1.3.3 事务管理能力.5 1.3.4 元数据管理.5 1.3.5 易监控的批处理应用.
14、5 1.3.6 丰富的流程定义.5 1.3.7 健壮的批处理应用.6 1.3.8 易扩展的批处理应用.6 1.3.9 复用企业现有 IT 资产.6 1.4 Spring Batch 2.0 新特性.6 1.4.1 支持 Java 5.7 1.4.2 支持非顺序的 Step.7 1.4.3 面向 Chunk 处理.7 1.4.4 元数据访问.11 1.4.5 扩展性.11 1.4.6 可配置性.12 1.5 Spring Batch 2.2 新特性.13 1.5.1 Spring Data 集成.13 1.5.2 支持 Java 配置.13 1.5.3 Spring Retry.14 1.5.4
15、 Job Parameters.14 1.6 开发环境搭建.15 第 2 章 Spring Batch 之 Hello World.16 2.1 场景说明.16 2.2 项目准备.16 2.2.1 项目结构.16 2.2.2 准备对账单文件.17 2.2.3 定义领域对象.18 2.3 定义 job 基础设施.18 2.4 定义对账 Job.19 2.4.1 配置 ItemReader.19 2.4.2 配置 ItemProcessor.21 2.4.3 配置 ItemWriter.22 2.5 执行 Job.23 2.5.1 Java 调用.23 2.5.2 JUnit 单元测试.24 2.
16、6 概念预览.26 第2篇 基本篇 第 3 章 Spring Batch 基本概念.28 3.1 命名空间.29 3.2 Job.30 3.2.1 Job Instance.31 3.2.2 Job Parameters.33 3.2.3 Job Execution.34 3.3 Step.35 3.3.1 Step Execution.37 3.4 Execution Context.38 3.5 Job Repository.39 3.5.1 Job Repository Schema.39 VIII Spring Batch 批处理框架 3.5.2 配置 Memory Job Repository.40 3.5.3 配置 DB Job Repository.41 3.5.4 数据库 Schema.42 3.6 Job Launcher.48 3.7 ItemReader.49 3.8 ItemProcessor.50 3.9 ItemWriter.50 第 4 章 配置作业 Job.52 4.1 基本配置.52 4.1.1 重启 Job.54 4.1.2 Job 拦截器.55 4