「」一文搞懂大数据批量处理框架Spring Batch的完美解析方案是什么( 三 )
文章图片
文章图片
Job提供的核心能力包括作业的抽象与继承 , 类似面向对象中的概念 。对于执行异常的作业 , 提供重启的能力 。
文章图片
文章图片
框架在Job层面 , 同样提供了作业编排的概念 , 包括顺序、条件、并行作业编排 。
文章图片
文章图片
在一个Job中配置多个Step 。不同的Step间可以顺序执行 , 也可以按照不同的条件有选择的执行(条件通常使用Step的退出状态决定) , 通过next元素或者decision元素来定义跳转规则;
为了提高多个Step的执行效率 , 框架提供了Step并行执行的能力(使用split进行声明 , 通常该情况下需要Step之间没有任何的依赖关系 , 否则容易引起业务上的错误) 。Step包含了一个实际运行的批处理任务中的所有必需的信息 , 其实现可以是非常简单的业务实现 , 也可以是非常复杂的业务处理 , Step的复杂程度通常是业务决定的 。
文章图片
文章图片
每个Step由ItemReader、ItemProcessor、ItemWriter组成 , 当然根据不同的业务需求 , ItemProcessor可以做适当的精简 。同时框架提供了大量的ItemReader、ItemWriter的实现 , 提供了对FlatFile、XML、Json、DataBase、Message等多种数据类型的支持 。
框架还为Step提供了重启、事务、重启次数、并发数;以及提交间隔、异常跳过、重试、完成策略等能力 。基于Step的灵活配置 , 可以完成常见的业务功能需求 。其中三步走(Read、Processor、Writer)是批处理中的经典抽象 。
文章图片
文章图片
作为面向批的处理 , 在Step层提供了多次读、处理 , 一次提交的能力 。
在Chunk的操作中 , 可以通过属性commit-interval设置read多少条记录后进行一次提交 。通过设置commit-interval的间隔值 , 减少提交频次 , 降低资源使用率 。Step的每一次提交作为一个完整的事务存在 。默认采用Spring提供的声明式事务管理模式 , 事务编排非常方便 。如下是一个声明事务的示例:
文章图片
文章图片
框架对于事务的支持能力包括:
Chunk支持事务管理 , 通过commit-interval设置每次提交的记录数;
支持对每个Tasklet设置细粒度的事务配置:隔离界别、传播行为、超时;
支持rollback和no rollback , 通过skippable-exception-classes和no-rollback-exception-classes进行支撑;
支持JMS Queue的事务级别配置;
另外 , 在框架资深的模型抽象方面 , Spring Batch也做了极为精简的抽象 。
文章图片
文章图片
仅仅使用六张业务表存储了所有的元数据信息(包括Job、Step的实例 , 上下文 , 执行器信息 , 为后续的监控、重启、重试、状态恢复等提供了可能) 。
BATCH_JOB_INSTANCE:作业实例表 , 用于存放Job的实例信息
推荐阅读
- |一文速览五月份隐私币重大进展:Monero、Zcash、Grin、Beam
- 人群中国科学家通过古人基因组数据探寻中国文明源流
- 联想|联想个人云存储Mac版上线 苹果电脑用户数据备份更便捷
- 信息史上最全SpaceX火箭数据开源,核心、组员舱、起落架、发射信息全都有!
- 云创|真旺(徐州)大数据总经理李华领一行到访云创
- 主题马蜂窝大数据:大人小孩一起过“六一”,主题公园最受欢迎
- |6大数据可视化应用设计规范
- 链上|链上数据5月扫描:10000美元阻力下的链上百态
- 腾讯科技|一文读懂网易招股书亮点:发售价不高于126港元 研发人员超1万名
- 孜然实验室|DNA存储器突破了理论极限,一部手机装下全世界的数据
