首页 > 其他分享 >批处理之spring-batch预研篇

批处理之spring-batch预研篇

时间:2023-03-22 22:37:53浏览次数:33  
标签:批处理 spring 排队 batch 大批量 导入 预研


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

目录

背景

思路

组件图

部分时序图

技术选型


背景

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

 

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

系统设计上:

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

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

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

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

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

思路

 

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

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

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

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

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

最终考虑使用spring-batch。

组件图

批处理之spring-batch预研篇_spring-batch

批处理之spring-batch预研篇_spring-batch_02

批处理之spring-batch预研篇_数据_03

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

模块依赖描述

批处理之spring-batch预研篇_数据_04

部分时序图

批处理之spring-batch预研篇_微服务_05

技术选型

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

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

标签:批处理,spring,排队,batch,大批量,导入,预研
From: https://blog.51cto.com/alex/6143455

相关文章

  • spring boot静态处理
    springboot在处理web静态请求上和springmvc在使用是有些不同的,同时还增加了一些新的特性。目录1.静态页面2.动态页面3.webjars4.webjars-locator5.静态资源版本管理1.静态页......
  • Spring Cloud Zuul组件 实现服务网关
    Zuul是Netffix提供的一个开源的API网关服务器,是客户端和网站后端所有请求的中间层,对外开放一个API,将所有请求导入统一的入口,屏蔽了服务端的具体实现,Zuul可以实现反向代......
  • SpringMVC-lesson04-hellospringmvc-注解开发-2023-03-22
    真实开发-注解开发1、<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XM......
  • SpringBoot接入微信JSSDK,看这篇妥妥的
    先给猴急的客官上干货代码GitHub接入微信JSSDKGitHub地址Gitee接入微信JSSDKGitHub地址前言事情的起因是因为疫情严重,领导要求做一个专题页,能够尽可能帮助所需要的......
  • SpringBoot接入微信JSSDK,看这篇妥妥的
    先给猴急的客官上干货代码GitHub​​接入微信JSSDKGitHub地址​​Gitee​​接入微信JSSDKGitHub地址​​前言事情的起因是因为疫情严重,领导要求做一个专题页,能够尽可能帮......
  • 9-springboot统一异常处理
    500错误页面之前可以xml中配置errorpage的配置,或者tomcat的web.xml中处理,现在可以进行统一处理。新建处理类统一处理@ControllerAdvicepublicclassExceptionHandler{......
  • Spring笔记
    spring1.创建项目GroupID是项目组织唯一的标识符,比如我的项目叫test001 那么GroupID应该是com.lixiaoming.test001域名.公司名.项目名ArtifactID就是项目的唯一的......
  • spring.rabbitmq.listener.simple.acknowledge-mode = manual and auto
    spring.rabbitmq.listener.simple.acknowledge-mode=manual*配置改成手动之后,spring不会报错。所以需要消费者抛异常*channel属性    basicNack和basicReject原......
  • SpringCloud 超大文件上传解决方案:分片断点上传(一)
    ​ HTML部分 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="up6.index" %><!DOCTYPE html PUBLIC "-//W3C//DTDXH......
  • vue+element-ui+springboot实现修改当前登录用户的信息
    正文:话不多说,直接上代码springboot代码/***根据id修改当前登录用户的信息**@paramusername*@return*/@GetMapping("/userna......