批处理之spring-batch预研篇

灰太狼 2022-06-06 23:12 245阅读 0赞

批处理是企业级业务系统不可或缺的一部分,spring batch是一个轻量级的综合性批处理框架,可用于开发企业信息系统中那些至关重要的数据批量处理业务。

目录

背景

思路

组件图

部分时序图

技术选型


背景

随着微服务化的系统越来越多,平台中有些耗时大批量的操作,比如:导入导出等问题暴露的越来越严重。老版本的解决方案(异步排队):这些功能和系统集成在一起,通过类似请求漏斗原理(线性排队执行),UI上有个结果页面(自动刷新)获取最终执行结果。

业务反馈:tms、oms有各自的导入导出“执行结果”,体验不好

系统设计上:

Ø 性能特别差,尽管采用定时任务排队执行解决,但时不时宕机;

Ø 系统资源浪费,并发一高时排队时间较长;

Ø 需要针对这些请求配置nginx转发,增加了运维复杂度;

Ø 对于大批量生成汇总类需求无力响应(需转发至报表,但有时候不是所有业务数据都希望被报表抽取);

Ø 微服务后,特别是DB拆分后不得不采用原来方案(集成,配置繁琐),上述问题更突出;

思路

独立出一个新系统(批处理服务引擎),进行数据的集中化管理,那它可以做什么?

Ø 性能好,支持一定数据的并发

Ø 能够对大批量数据进行抽取,分析处理,输出(目前定位在导入导出)

Ø 可以管理多个数据源,同时支持不同数据源之间的同步(随着微服务越来越多这个不可少,接口毕竟解决不了这些问题)

Ø 集中化需考虑业务侵入性,原来应用的逻辑需迁移到新系统,需维护两处逻辑?需求是否多变?此处很关键

最终考虑使用spring-batch。

组件图

CenterCenter 1Center 2

最终妥协下来选择了方案2,但未来要向方案1的方向孵化。

模块依赖描述

Center 3

部分时序图

Center 4

技术选型

* spring-boot 1.5.4.RELEASE
* mybatis-spring-boot 1.3.0
* poi、poi-ooxml 3.15

最后,如需更深入的了解可以看下篇《spring-batch实践篇》

发表评论

表情:
评论列表 (有 0 条评论,245人围观)

还没有评论,来说两句吧...

相关阅读

    相关 批处理spring-batch

    批处理是企业级业务系统不可或缺的一部分,spring batch是一个轻量级的综合性批处理框架,可用于开发企业信息系统中那些至关重要的数据批量处理业务。 目录 背景 思路