spring-batch预研篇

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/itsoftchenfei/article/details/78131930

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

目录

背景

思路

组件图

部分时序图

技术选型


背景

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

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

系统设计上:

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

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

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

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

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

思路

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

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

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

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

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

最终考虑使用spring-batch。

组件图

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

模块依赖描述

部分时序图

技术选型

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

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

猜你喜欢

转载自blog.csdn.net/itsoftchenfei/article/details/78131930
今日推荐