目录

SpringBatch简介

批处理场景

批处理需求

SpringBatch使用场景

SpringBatch架构介绍

SpringBatch分层架构如下

SpringBatch 总体架构

SpringBatch基于Mysql初始化表


SpringBatch简介

Spring Batch是一个轻量级,全面的批处理框架,旨在开发对企业系统日常运营至关重要的强大批处理应用程序。Spring Batch建立在人们期望的Spring框架特性(生产力,基于POJO的开发方法和普遍的易用性)的基础上,同时使开发人员可以在必要时轻松访问和利用更高级的企业服务。 划重点:Spring Batch不是一个调度框架,而是批处理框架。

批处理场景

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

批处理应用通常有以下特点:

  • 数据量大,从数万到数百万甚至上亿不等;
  • 整个过程全部自动化,并预留一定接口进行自定义配置;
  • 这样的应用通常是周期性运行,比如按日、周、月运行;
  • 对数据处理的准确性要求高,并且需要容错机制、回滚机制、完善的日志监控等

批处理需求

批处理作业两个典型特征是批量执行与自动执行(需要无人值守):前者能够处理大批量数据的导入、导出和业务逻辑计算;后者无需人工干预,能够自动化执行批量任务。

在关注其基本功能之外,还需要关注如下的几点:

  • 健壮性:不会因为无效数据或错误数据导致程序崩溃;

    • 可靠性:通过跟踪、监控、日志及相关的处理策略(重试、跳过、重启)实现批作业的可靠执行;
    • 扩展性:通过并发或者并行技术实现应用的纵向和横向扩展,满足海量数据处理的性能需求; 目前批处理框架SpringBatch正好可以满足以上需求。

SpringBatch使用场景

  • 从数据库,文件或队列中读取大量记录。
  • 以某种方式处理数据。
  • 以修改后的形式写回数据

其数据流转示意图如下:

Spring Batch提供了可重用的功能,这些功能对于处理大量记录至关重要,包括日志记录/跟踪,事务管理,作业处理统计信息,作业重启,跳过和资源管理。


SpringBatch架构介绍

SpringBatch分层架构如下

这种分层的体系结构突出了三个主要的高级组件:应用程序,核心和基础结构。

  • 该应用程序包含开发人员使用Spring Batch编写的所有批处理作业和自定义代码。
  • 批处理核心包含启动和控制批处理作业所需的核心运行时类。它包括实现 JobLauncher,Job和Step。
  • 基础结构包含公用的读取器和写入器以及服务(例如RetryTemplate),应用程序开发人员(例如ItemReader和的读取器和写入器ItemWriter)和核心框架本身(重试,这是它自己的库)都使用它们。

SpringBatch 总体架构

spring batch总体架构如下:

在spring batch中一个job可以定义多个的步骤step,在每一个step里面可以定义其专属的ItemReader用于读取数据,ItemProcesseor用于处理数据,ItemWriter用于写数据,而每一个定义的job则都在JobRepository里面,我们可以通过JobLauncher来启动某一个job。

SpringBatch基于Mysql初始化表

当我们在使用SpringBatch时候,需要在数据库中初始化9张表,以保证我们SpringBatch可以正常使用。初始化表sql语句是在我们的spring-batch-core包

下面的schema-mysql.sql文件。具体表名如下:

  • batch_job_execution
  • batch_job_execution_context
  • batch_job_execution_params
  • batch_job_execution_seq
  • batch_job_instance
  • batch_job_seq
  • batch_step_execution
  • batch_step_execution_context
  • batch_step_execution_seq

以上对SpringBatch是做什么以及应用场景做了简单介绍,下一章我们将对SpringBatch核心类做进一步介绍。如果大家喜欢我的文章可以一键三连,如果大家有什么不懂得可以进微信群来探讨。

SpringBatch批处理框架入门(一)相关推荐

  1. SpringBatch批处理框架入门(二)

    这篇文章接上一篇SpringBatch批处理框架入门(一),继续讲解SpringBatch基础知识. 目录 SpringBatch 核心类介绍 SpringBatch 核心类Job SpringBat ...

  2. 全网最详细SpringBatch批处理读取分区(Paratition)文件讲解

    文章目录 一.分区Step 1.数据分区 2.分区处理 二.实现分区关键接口 1.Partitioner 2.StepExecutionSplitter 3.PartitionHandler 三.基本 ...

  3. springbatch读取文件_通过例子讲解Spring Batch入门,优秀的批处理框架

    1 前言 " 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Spring Batch是一个轻量级的.完善的批处理框架,作为Spring体系中的一员,它拥有灵活.方便.生产 ...

  4. Spring Boot 集成 批处理框架Spring batch

    Spring Batch是一个轻量级的框架,完全面向Spring的批处理框架,用于企业级大量的数据读写处理系统.以POJO和Spring 框架为基础,包括日志记录/跟踪,事务管理. 作业处理统计工作重 ...

  5. Spring Batch 批处理框架

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

  6. C#.Net EF实体框架入门视频教程

    当前位置:  主页 >  编程开发 >  C_VC视频教程 >  C#.Net EF实体框架入门视频教程 >  kingstone金士顿手机内存卡16G仅65元 1.EF实体框 ...

  7. 学会Spring Batch 批处理框架,效率翻倍,上班轻松又快乐

    一.SpringBatch 介绍 Spring Batch 是一个轻量级.全面的批处理框架,旨在支持开发对企业系统的日常操作至关重要的健壮的批处理应用程序.Spring Batch 建立在人们期望的 ...

  8. 『Scrapy』爬虫框架入门

    框架结构 引擎:处于中央位置协调工作的模块 spiders:生成需求url直接处理响应的单元 调度器:生成url队列(包括去重等) 下载器:直接和互联网打交道的单元 管道:持久化存储的单元 框架安装 ...

  9. c++框架有哪些_Java Mybatis框架入门教程_v20200726

    MyBatis 的前身是 Apache 的开源项目 iBatis.MyBatis 几乎可以代替 JDBC,是一个支持普通 SQL 查询,存储过程和高级映射的基于 Java 的优秀持久层框架.MyBat ...

最新文章

  1. html动态加载js方法,如何通过JavaScript动态加载js
  2. css和js实现3d图片,JavaScript_纯JS实现旋转图片3D展示效果,CSS:style type=text/cssgt - phpStudy...
  3. mybatis使用if判断参数是否为空
  4. .NET的一点历史故事:误入歧途,越陷越深
  5. LeetCode 2055. 蜡烛之间的盘子(前缀和)
  6. DG Lecture 2 part 2: points, vectors, directional derivative
  7. 树和二叉树定义、基本术语和性质
  8. solr4.8.1 + tomcat8 配置
  9. Linux中把程序添加到系统服务中
  10. 位图管理、图片下载缓存、管理图片内存 (三) 在非UI线程中处理位图
  11. ApacheCN 翻译/校对/笔记整理活动进度公告 2019.9.20
  12. Shell脚本变量学习_02
  13. Android11 禁止第三方APP安装,通过白名单管理
  14. 利用requests库下载视频
  15. 【复变函数】常用公式大全
  16. (二)编译PVE内核5.10.6-1-pve及安装内核补丁fullconeNat
  17. 攻防世界web新手区合集
  18. Java classloader 常见问题及解决方法
  19. ubuntu1704入门教程(一)下载安装
  20. php mysql oracle_php连接Oracle数据库

热门文章

  1. jpa取出mysql数组_java读取数据库数据,并将数据存入数组返回
  2. NumPy (6)-结构化数据类型数组
  3. C指针原理(6)-C内嵌汇编
  4. 【深度学习】我用 PyTorch 复现了 LeNet-5 神经网络(CIFAR10 数据集篇)!
  5. 高等数学回顾.pptx
  6. 【竞赛相关】Kaggle竞赛宝典国内外竞赛方案汇总
  7. 简约而不简单|值得收藏的Numpy小抄表(含主要语法、代码)
  8. 推荐:腾讯开源的词向量精简版本下载
  9. 专访 Swin Transformer 作者胡瀚:面向计算机视觉中的「开放问题」 原创
  10. 如何用杠铃策略,构建你的“反脆弱性”