『埃尔法哥哥』一文搞懂大数据批量处理框架Spring Batch的完美解析方案是什么( 二 )
通过Spring Batch框架可以构建出轻量级的健壮的并行处理应用,支持事务、并发、流程、监控、纵向和横向扩展,提供统一的接口管理和任务管理 。
本文插图
框架提供了诸如以下的核心能力 , 让大家更关注在业务处理上 。 更是提供了如下的丰富能力:
明确分离批处理的执行环境和应用
将通用核心的服务以接口形式提供
提供“开箱即用” 的简单的默认的核心执行接口
提供Spring框架中配置、自定义、和扩展服务
所有默认实现的核心服务能够容易的被扩展与替换 , 不会影响基础层
提供一个简单的部署模式 , 使用Maven进行编译
批处理关键领域模型及关键架构
先来个Hello World示例 , 一个典型的批处理作业 。
本文插图
典型的一个作业分为3部分:作业读、作业处理、作业写 , 也是典型的三步式架构 。 整个批处理框架基本上围绕Read、Process、Writer来处理 。 除此之外 , 框架提供了作业调度器、作业仓库(用以存放Job的元数据信息 , 支持内存、DB两种模式) 。
完整的领域概念模型参加下图:
本文插图
Job Launcher(作业调度器)是Spring Batch框架基础设施层提供的运行Job的能力 。 通过给定的Job名称和作Job Parameters , 可以通过Job Launcher执行Job 。
通过Job Launcher可以在Java程序中调用批处理任务 , 也可以在通过命令行或者其它框架(如定时调度框架Quartz)中调用批处理任务 。
Job Repository来存储Job执行期的元数据(这里的元数据是指Job Instance、Job Execution、Job Parameters、Step Execution、Execution Context等数据) , 并提供两种默认实现 。
一种是存放在内存中;另一种将元数据存放在数据库中 。 通过将元数据存放在数据库中 , 可以随时监控批处理Job的执行状态 。 Job执行结果是成功还是失败 , 并且使得在Job失败的情况下重新启动Job成为可能 。 Step表示作业中的一个完整步骤 , 一个Job可以有一个或者多个Step组成 。
批处理框架运行期的模型也非常简单:
本文插图
Job Instance(作业实例)是一个运行期的概念 , Job每执行一次都会涉及到一个Job Instance 。
Job Instance来源可能有两种:一种是根据设置的Job Parameters从Job Repository(作业仓库)中获取一个;如果根据Job Parameters从Job Repository没有获取Job Instance , 则新创建一个新的Job Instance 。
Job Execution表示Job执行的句柄 , 一次Job的执行可能成功也可能失败 。 只有Job执行成功后 , 对应的Job Instance才会被完成 。 因此在Job执行失败的情况下 , 会有一个Job Instance对应多个Job Execution的场景发生 。
总结下批处理的典型概念模型 , 其设计非常精简的十个概念 , 完整支撑了整个框架 。
本文插图
Job提供的核心能力包括作业的抽象与继承 , 类似面向对象中的概念 。 对于执行异常的作业 , 提供重启的能力 。
本文插图
框架在Job层面 , 同样提供了作业编排的概念 , 包括顺序、条件、并行作业编排 。
推荐阅读
- 「」儿童节就送阿尔法蛋学习手表,安全贴心又能学习
- -悟空哥哥-618年中大促力来袭,iQOO Neo3应该是你不容错过的5G手机
- 埃尔法哥哥面对用户需求与AI技术之间的不平衡,AI产品经理该如何做?
- 埃尔法哥哥谁说机器学习难?它在这朵云上就没有门槛
- 埃尔法哥哥Python基础语法之“数据应用”
- 埃尔法哥哥Bionumerics软件的多位点VNTR分析
- 埃尔法哥哥一个例子就能读懂大数据,原来数据分析能在这些行业里使用
- 埃尔法哥哥C++程序员的职业生涯规划
- 埃尔法哥哥MAML-Tracker:用目标检测思路做目标跟踪?小样本即可得高准确率丨CVPR 2020
- 埃尔法哥哥数据规范之代码表
