陪你解读springbatchspringbatch介绍

GrimMjx      2022-04-28     277

关键词:

前言

  整个章节由浅入深了解Spring Batch,让你掌握批处理利器。面对大批量数据毫无惧色。本章只做介绍,后面章节有代码示例。好了,接下来是我们的主角Spring Batch。

 

1.1 背景介绍

1.1.1 诞生

  开源社区一直把大部分注意力集中在web和SOA框架中,基于java的批处理框架确很少,因此一个标准的、可重用的批处理框架对我们来说很重要。先来说一下什么是批处理?在企业应用时,需要定期或者人工触发的读入大批量数据,然后完成相应的业务处理并进行归档。这类工作就成为批处理。

  SpringSource和Accenture致力于通过合作来解决这种状况,Accenture在实现批处理架构上有着丰富的产业实践经验,SpringSource则有深厚的技术开发经验,两者成为强大的合作伙伴,创造出高质量的、市场认可的企业级java解决方案。因此诞生了Spring Batch

1.1.2 为什么使用它?

  Spring Batch作为Spring的子项目,是一款轻量级的综合批处理框架,通过它可以构建出壮健的企业级批处理应用,因为基于Spring,所以开发者十分容易上手使用。SpringBatch不仅提供了统一的读写接口、丰富的任务处理方式、可重用的功能,还包括了日志,事务管理,任务统计、弹性处理等功能。使开发人员可以更多的关注业务处理过程。

  Spring Batch不是一个调度框架,因为已经有非常好的企业级调度框架包括Quartz等,它只注重任务处理相关问题,如执行任务、事务、并发等,而不是提供调度功能。它是为了和调度程序一起完成任务而设计的。比如我们希望定期的执行大批量数据任务,那么可结合Quartz等来实现。

1.1.3 应用场景

  大量文件处理是比较常见的企业级应用场景,比如你要做聚合支付,那么必定会有聚合账单,如果每天有百万甚至千万级别的交易数据。那么将如何处理呢?如何进行海量数据的对账成了难题。或者每天需要处理其他业务场景的大数据量的文件,最后将处理好的数据写入数据库中。

  其实可以先不用想Spring Batch,如果没有,我们如何开发?这里就需要一个框架需要以下几点:

  • 支持对多种数据源进行操作
  • 能够定义不同job之间的顺序关系
  • 能够定义每个job的输入和输出数据操作
  • 对异常输入数据有校验机制和弹性处理
  • 支持job重跑等处理机制

  这不就是一个批处理框架需要的基础功能吗?

 

1.2 Spring Batch架构

1.2.1 框架层次

  Spring Batch分三层,应用层,核心层和基础架构层。

  应用层:开发人员使用Spring Batch编写的所有批处理任务代码

  核心层:包含加载和控制批处理作业所需的核心类,Job,Step等类的实现

  基础架构层:包含通用的读写器和重试模块 

  

1.2.2 概念模型  

  下图显示了完整的概念模型,JobLauncher启动Job,Job可以有多个Step组合,每一个Step由开发者自己编写,可一把一个大Step分成多个小Step,完全看开发者意愿。每一个Step对应一个ItemReader、ItemProcessor和ItemWriter。所有的批处理框架都可以抽象成最简单的过程,读取数据,处理数据,写数据。所以Spring Batch提供了3个接口,ItemReader、ItemProcessor和ItemWriter。JobRepository则是记录Job、Step和发起Job的执行信息等。

  

  下图为处理流程,reader读,processor处理校验数据,writer写数据(入参是list,减少io次数)

  

 

1.3 处理原则

  下面是一些处理原则,可参考

  • 尽量使用公用模块
  • 尽量简化操作,不要有复杂的业务逻辑。更不要处理一条数据还要调外部接口进行数据加工
  • 尽可能少的IO操作
  • 同一个批处理文件不要处理2次
  • 尽可能压力测试

 

想过七夕?->女朋友陪你玩游戏(c)(代码片段)

如何写出代码让女朋友陪你玩游戏三子棋1.展示棋盘2.玩家落子3.女朋友落子4.判断游戏输赢5.最终效果猜数字1.设立菜单2.生成随机数3.进行数字判断4.最终效果扫雷1.初始化棋盘2.展示棋盘3.布置雷4.排除雷5.优化展示效果6.最终展示... 查看详情

2019年的元旦还是一个人?邮箱163陪你如何?

...元旦即将翩然而至。这个元旦有些不一样哦~邮箱163将会陪你度过~小编介绍的163邮箱是拥有20年品牌历史的老牌邮箱,亦是邮箱行业的先驱——TOMVIP邮箱旗下的邮箱域:@163.net。TOMVIP邮箱采用国际顶级卡巴斯基杀毒引擎,专业领先... 查看详情

2022开源之夏|serverlessdevs陪你“变得更强”

Serverless是近年来云计算领域热门话题,凭借极致弹性、按量付费、降本提效等众多优势受到很多人的追捧,各云厂商也在不断地布局Serverless领域。但是随着时间的发展,Serverless领域也暴露出一些比较严重的问题,例如厂商锁定... 查看详情

程序员的需求也该有人管管了!1024,图灵陪你过节啦

查看详情

朝花夕拾-噫吁嚱,编程人,科技魂(jsliang陪你瞎叨叨)

...o小伙伴们晚上好,欢迎来到jsliang的吹水频道,今晚jsliang陪你彻夜畅聊~​最近工作比较忙,今晚瞅空写篇文章,本篇文章将会讲述几个观点:学习划水跳槽涨薪(找工作、学知识)柴米油盐酱醋茶(过日子)写完jsliang看了两遍... 查看详情

美好的时刻--crosstheworldwithyoutogether(陪你路过这个世界)

虽然不是第一次坐飞机(悄悄地说:第二次坐飞机),只要善于发现,人生处处是惊喜,享受美好生活!!!(享受、体验,也更多的希望记录美好生活) ?1、登机1.1托运????坐飞机很多物品不能随身携带的(液体、充电宝--... 查看详情

剑英陪你玩转图形学彩虹

1.今天的主题是颜色开篇废话今天看到蛮牛把干货区放上了主页,居然还能看到我的帖子,让我很不好意思。各位同学对不起,我来晚了。今天的李总是因为姓李,又总是迟到,所以叫做李总。今天还是讲图形学,为人不识武藤.... 查看详情

idea设置背景图,让金轮马老师陪你敲代码

打开IDEA,选择File->Settings选择Plugin->搜索BackGroundImage->单击Install安装安装完成单击RestartIDE重启IDEA双击shift(shift+shift)全局搜索SetBackgroundImage,找到如下Images点击进入选择预先下载好的图片(注意这个页面是可... 查看详情

如何让你的朋友心甘情愿的陪你去修电脑(代码片段)

如何让你的朋友或者室友心甘情愿的陪你去修电脑?如果正常途径走不通的话,那就把他的电脑搞坏吧(手动滑稽)!首先,我们在桌面新建一个文本文档  输入:#0是数字0中间有空格隔开shutdown-s-t0  然后那么重... 查看详情

回家的路上月亮就会陪你走到天亮

  从不怀疑,月亮只是在故乡的东山升起的;从不怀疑,月亮只挂在故乡村口的那株老树上;从不怀疑,月亮只活在故乡无瑕的小溪里……月亮离开故乡就唤不醒灵魂,故乡离开月亮就会从此落魄。无论身处何时何地,找到了... 查看详情

《愿有人陪你颠沛流离》_卢思浩

 既然认准了一条路,就不要去打听要走多久。有些人对你说了好几次我爱你,也不一定是真的;有些人看起来毫不在乎你,其实你不知道他忍了多少次想要联系你的冲动。至于未来会怎么样,要用力走下去才知道。所有牛逼... 查看详情

精读大话数据结构,陪你拿下45分ep2(代码片段)

上一期我们学习了数据结构的基本知识,那么这次就要进入实战啦!回顾:什么是线性表?内存中以顺序存储的表。这里我们就要以线性表讲起,来实现各种接口函数线性表基本形式#defineMAXSIZE20//定长顺序表//... 查看详情

陪你奋战大厂秋招!c认证免费测试上线啦

 最近,互联网行业开始秋招爆发!许多互联网大厂都在进行大规模地扩招:阿里官宣这次秋招是“史上最大规模校招”;字节跳动仅仅是提前批,便放出4000+offer......此外,“卷起来”的现象也在互联... 查看详情

剑英陪你玩转图形学打通任督二脉

1.这是一个尝试的系列,突发奇想觉得有声音可能会更有趣,这个系列Blog都会出视频有声版。这个系列主要是为了玩一玩代码。我觉得呢,写程序是一件很有意思的事情,没有必要搞得那么苦大仇深。但是,却总有那么一些人、... 查看详情

百度用aigc开启2023“好运中国年”,玩法升级陪你过新春

还在担心过年没有新意?来百度过充满AI的新春好运年!百度2023“好运中国年”活动今天正式启动,除了“集好运”等活动的丰厚红包福利,还将结合百度AI数字人度晓晓、百度AIGC能力(人工智能自动生成内... 查看详情

chatgpt陪你读源码(代码片段)

...文结合目前的chatGPTBox插件,来演示,如何让chatGPT陪你一起读源码。准备chatGPTBox项目链接:https://github.com/josStorer/chatGPTBox使用指南:https://github.com/josStorer/chatGPTBox/wiki/Guide开发构建:https://github.com/josStorer/chatGPTBox/wiki/Development&... 查看详情

作为一名程序员不要假装很努力,因为结果不会陪你演戏

我一直相信这样一句话:真正的危机,来源于在正确的时间做不正确的事。没有在正确的时间,为下一步做出积累,这才是危机的根源。比如,当你迈过了30岁这个坎,你的能力还局限于程序的范围,也没有积累好自己的深度以... 查看详情

你好,皮卡丘!用python写一个可以陪你聊天的皮卡丘版桌面宠物吧~(代码片段)

installpikachupytoolspytoolspytoolsappkeys=[]url=response=requests.get(url%(random.choice(appkeys),inputs))reply=response.json()[reply:replyaipAipSpeechself.aipspeech_api=AipSpeech(app_id,api_key,secr 查看详情