此系列博客皆为学习Spring Batch时的一些笔记;

为什么我们需要批处理?

  1. 我们不会总是想要立即得到需要的信息,批处理允许我们在请求处理之前就一个既定的流程开始搜集信息;比如说一个银行对账单,我们可以按月生成,并在用户查询之前开启一个批处理流程进行处理;
  2. 有时候它能让生意做得更好;比如说在线购物时,并不是说你买了一个产品零售商就立即发货,而是四五个小时后,统一发货;
  3. 更好的利用资源;让应该利用的处理能力闲置起来是一个大的浪费,我们可以定制处理让一个机器一个接一个的运行Job可以更好的利用机器的处理能力;

什么是批处理?

  批处理是指在没有与用户进行交互和干扰的情况下进行数据处理,一旦开始,一个批处理流程应该在没有任何干扰的情况下运行至结束;

为什么要使用Spring Batch?

  1. 可维护性,Spring Batch能让你依靠Spring框架所提倡的依赖注入去解耦对象,凭借Spring所提供的测试工具生成健壮的一系列测试单元,这些都让你的维护风险最小化;
  2. 灵活性,使用Spring Batch,你能在系统之间共享代码,如你能使用那些在你的Web应用程序中已经被测试和调试过的服务;
  3. 可扩展性,在一个完全没有事务管理的Batch Job中,你只需要记住一些原则,并通过一些简单的配置就可以让整个批处理流程具有事务回滚和Commit的能力;
  4. 学习曲线低,如果你有过使用Spring的经验,你只需很小的学习曲线就能使用Spring Batch,因为Spring Batch建立在Spring框架的基础之上,它遵循Spring的惯例,像其他基于Spring的应用程序那样,使用Spring的其它特征;
  5. 活跃的社区支持;

Spring Batch的背景及组成

Spring Batch框架是埃森哲和SpringSource合作项目,它利用一个基于标准的方式去实现常见的批处理模式和范例;它实现的特征包括:数据验证、输出格式化、用一种可重用的方式去实现复杂的业务规则、处理大数据集的能力;

Spring Batch由3层组成:

第一层是应用程序层,包括:所有的自定义代码、为建立批处理流程的所有配置、业务逻辑和服务;注意应用程序层并不处于其它两层的上方,而是封装了其它两层(核心层和基础框架层),原因是在应用程序层中绝大多数你所开发的自定义代码都是和核心层一起工作的;

应用程序层绝大部分时候是和下一层(核心层)进行交互,核心层包含了定义“批处理域”的所有部分,核心组件的元素包括Job和Step接口,同时也包括执行Job的所有接口:JobLauncher和JobParameter;

最下面一层是基础框架层,为了做一些处理,你需要从文件、数据库中读写数据,或者应付一个Job失败的情况,这些部分被视作为常见的基础框架,被放置在Framework的基础框架组件里面。

注意:Spring Batch最常见的误解是它是一个scheduler,但在Spring Batch中没有任何一种方式能让一个Job在某个预定的时间或者被某个事件触发时启动,这些都是通过外部的方式来做到

使用Spring Batch来定义Job

Spring Batch包含了很多领域特定的概念,其间就包括Job,一个Job是指由很多Step组成的一个流程,当一个Step失败之后,这个Job可能会重新运行也可能不会重新运行,一个Job的流程也可能基于某个条件来运行;我们可以在一个applicationContext文件中这样来定义一个Job:

<bean id="accountTasklet"
class="com.thoughtworks.springBatchDemo.AccountTasklet"/>
<job id="accountJob">
<step id="accountStep">
<tasklet ref="accountTasklet"/>
</step>
</job>

Spring Batch Admin Project

Spring Batch提供了很多管理工具,例如启动或停止Spring Batch Job、查看上次Job运行情况的统计信息;Spring Batch将这些功能都包含在一个新的插件里:Spring Batch Admin Project,它提供了一个基于Web的控制中心,让你能对你的批处理流程实施控制,并能监控批处理的性能。

初探Spring Batch的更多相关文章

  1. 大量数据也不在话下,Spring Batch并行处理四种模式初探

    1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Spring相关文章:Springboot-Cloud 前面写了一篇文章<通过例子讲解Spring Batch入门,优 ...

  2. Spring Batch远程分区的本地Jar包模式

    1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Spring相关文章:Springboot-Cloud Spring Batch远程分区对于大量数据的处理非常擅长,它的实现 ...

  3. Spring Batch在大型企业中的最佳实践

    在大型企业中,由于业务复杂.数据量大.数据格式不同.数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理.而有一些操作需要定期读取大批量的数据,然后进行一系列的后续处理.这样的过程就是" ...

  4. spring batch资料收集

    spring batch官网 Spring Batch在大型企业中的最佳实践 一篇文章全面解析大数据批处理框架Spring Batch Spring Batch系列总括

  5. Spring Batch学习笔记三:JobRepository

    此系列博客皆为学习Spring Batch时的一些笔记: Spring Batch Job在运行时有很多元数据,这些元数据一般会被保存在内存或者数据库中,由于Spring Batch在默认配置是使用H ...

  6. Spring Batch学习笔记二

    此系列博客皆为学习Spring Batch时的一些笔记: Spring Batch的架构 一个Batch Job是指一系列有序的Step的集合,它们作为预定义流程的一部分而被执行: Step代表一个自 ...

  7. Spring Batch 中文参考文档 V3.0.6 - 1 Spring Batch介绍

    1 Spring Batch介绍 企业领域中许多应用系统需要采用批处理的方式在特定环境中运行业务操作任务.这种业务作业包括自动化,大量信息的复杂操作,他们不需要人工干预,并能高效运行.这些典型作业包括 ...

  8. Spring Batch 批处理框架

    <Spring Batch 批处理框架>基本信息作者: 刘相 出版社:电子工业出版社ISBN:9787121252419上架时间:2015-1-24出版日期:2015 年2月开本:16开页 ...

  9. [Spring Batch] 图解Spring Batch原理

    找到一副以前学习的图,稻清楚的描述了Spring Batch运行原理:  

随机推荐

  1. 计算LDA模型困惑度

    http://www.52nlp.cn/lda-math-lda-%E6%96%87%E6%9C%AC%E5%BB%BA%E6%A8%A1 LDA主题模型评估方法--Perplexity http:/ ...

  2. SQL SERVER数据类型与C#数据类型对照表

      SQL SERVER类型   C#类型 精确数字 bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数 ...

  3. 阿里云服务器Linux CentOS安装配置(六)resin多端口配置、安装、部署

    阿里云服务器Linux CentOS安装配置(六)resin多端口配置.安装.部署 1.下载resin包 http://125.39.66.162/files/2183000003E08525/cau ...

  4. oauth基本流程和原理

    组装loginurl->去第三方登录验证->回调callbackurl+code(票据)->本地根据code+appid+appkey组装url隐式curl获取用户信息->完成 ...

  5. Yii2中数据过滤方案

    1. 将数据赋值给model对象再通过model保存数据到数据库时有两种方法. 1) load()再save(). 这种可以通过$model->setScenario('test_scenari ...

  6. openfire 用户密码加密解密

    1.openfire采用的加密方法 Blowfish.java /** * $RCSfile$ * $Revision: 3657 $ * $Date: 2002-09-09 08:31:31 -07 ...

  7. (一)在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib 及一些问题

    一.准备工作: 1.下载OpenCV安装包:https://github.com/opencv/opencv 安装过程实际上就是解压过程,安装完成后得到(这里修改了文件名): 2.下载opencv_c ...

  8. PDO和消息队列的一点个人理解

    什么是消息队列,百度百科说,···消息队列····是在消息的传输过程中保存消息的容器. 看着网上林林总总的文章,都说是为了应对高并发,处理数据量超级大的一种数据容器,也可以说是利用各种方式,先把数据存 ...

  9. cocos2dx 3.x (单选,多选,复选checkBox按钮的实现) RadioButton

    // //  LandLordsMakeNewRoom.hpp //  MalaGame39 // //  Created by work on 2016/12/19. // //   #ifndef ...

  10. 创建redis集群

    假设你已经安装好了redis ,如果还没有请安装 将多个实例跑起来 创建一个目录,比如 redis-cluster 把redis-server拷贝到这个目录下 在目录下为每一个实例创建一个文件夹 在每 ...