zoukankan      html  css  js  c++  java
  • Spring Batch源码阅读-基本概念(一)

    文档

    https://www.docs4dev.com/docs/zh/spring-batch/4.1.x/reference/domain.html#domainLanguageOfBatch

    https://www.wenjiangs.com/doc/txqspanos

    什么是Spring Batch

    大批量处理数据流程往往经过以下步骤:

                           1.从数据源读取数据excel,数据库、csv、txt文件等

                     2.然后经过加工过滤后

                     3.针对加工过滤后数据进行处理(业务逻辑处理、写入数据库 excel、csv、txt等)。

    需要面临问题:

            1.异常中断重启恢复

                        2.处理过程中的各种统计如:成功数、失败数等

    使用spring batch 用户只需要专注读取数据加工过滤数据和处理业务数据

    Spring Batch提供了大量的,可重用的功能,这些功能对大数据处理来说是必不可少的,包括 日志/跟踪(tracing),事务管理, 任务处理(processing)统计,任务重启, 忽略(skip),和资源管理等功能。 此外还提供了许多高级服务和特性, 使之能够通过优化(optimization ) 和分片技术(partitioning techniques)来高效地执行超大型数据集的批处理任务。

    Spring Batch结构

     

    JobLauncher

    job的容器,负责启动job,以及job的元数据管理

    job

    Step的容器负责调度Step执行,将执行结果反馈给Job

    Step

    真正的任务处项,一个job可以有多个Step

    ItemReader

    读取数据,可以是xml、excel、txt、mysql等,spring batch 很多基本的spring batch都有默认实现,具体可以看此接口的实现

    ItemProcess

    根据itemReader读取的数据做加工和过滤处理如VO互转 如果过滤返回null就行

    ItemWrlter

    将itemProcess加工的数据做写入操作,可以是xml、excel、txt、mysql等,spring batch 很多基本的spring batch都有默认实现,具体可以看此接口的实现

    JobRepository

    负责job在启动、调度 、读取、写入过程中信息存储,如执行时间,结果、成功数量 失败数量、等。可以是数据库、redis、h2等 spring batch默认提供的是数据库

    看了上图我们真正只需要关心   ItemReader,ItemProcess,ItemWrlter 也就是 读取 加工和 写入,其他都是spring batch调度

    spring batch元数据

    元数据可以任意一种格式存在,就看jobRepository实现 我这里展示最常用的数据库记录元数据的相关表

    BATCH_JOB_INSTANCE   
                             根据参数维度不同参数就是一次job
    BATCH_JOB_EXECUTION  
                              BATCH_JOB_INSTANCE 子表(1对多),每次run(失败重试)就是一次 描述了一次执行生命周期各个状态,如:本次执行状态 开始结束时间 如果异常 异常原因
    BATCH_JOB_EXECUTION_PARAMS 
                               每次每次执行job(BATCH_JOB_EXECUTION) 的参数
    BATCH_JOB_EXECUTION_CONTEXT
                               允许用户保存每次执行Execution的一些状态信息
    BATCH_STEP_EXECUTION
                              每次job(BATCH_JOB_EXECUTION)执行可以包含多个step子任务项 这里记录每个子任务执行状态,成功、 失败、读取了多少、跳过多少、回滚多少、成功多少行等
    BATCH_STEP_EXECUTION_CONTEXT
                                允许用户保存针对执行Step的一些状态信息
    BATCH_JOB_SEQ 
                              BATCH_JOB_INSTANCE自增主键的维护 每次创建(BATCH_JOB_INSTANCE)会回去这个表max(id) +1 作为主键id 同事更新此表
    BATCH_JOB_EXECUTION_SEQ
                            BATCH_JOB_EXECUTION自增主键的维护 每次创建(BATCH_JOB_EXECUTION)会回去这个表max(id) +1 作为主键id 同事更新此表
  • 相关阅读:
    linux创建用户
    使用Myeclipse插件将wsdl生成java客户端代码
    JAVA时间格式转换大全
    数据库DDL语句书写规范
    jacon
    应用jacob组件造成的内存溢出解决方案(java.lang.OutOfMemoryError: Java heap space)
    为什么使用内部类
    HBase查找一条数据的过程
    Hadoop:输入,输出,key,value格式
    ArrayList和Vector的区别
  • 原文地址:https://www.cnblogs.com/LQBlog/p/15429882.html
Copyright © 2011-2022 走看看