全面解析大数据批处理框架Spring Batch,所谓完美解析方案是什么?

Spring Boot & Spring Batch 实现批处理 Spring Boot & Spring Batch 实现批处理 需求领域 自动,复杂地处理大量信息,无需用户交互即可最有效地进行处理。这些操作通常包括基于时间的事件(例如月末计算,通知或通信)。 定期应用非常大的数据集(例如,保险利益确定或费率调整)重复处理复杂的业务规则。 从内部和外部系统接收的信息的集成,通常需要格式化,验证和以事务方式进行的处理到记录系统中。批处理每天用于为企业处理数十亿笔事务 Spring Batch介绍 核心流程图如下: Spring Batch 是一个轻量级的,全 阅读详情

如今微服务架构讨论的如火如荼。但在企业架构里除了大量的OLTP交易外,还存在海量的批处理交易。在诸如银行的金融机构中,每天有3-4万笔的批处理作业需要处理。针对OLTP,业界有大量的开源框架、优秀的架构设计给予支撑;但批处理领域的框架确凤毛麟角。是时候和我们一起来了解下批处理的世界哪些优秀的框架和设计了,今天我将以Spring Batch为例,和大家一起探秘批处理的世界。

  • 初识批处理典型场景
  • 探秘领域模型及关键架构
  • 实现作业健壮性与扩展性
  • 批处理框架的不足与增强

批处理典型业务场景

对账是典型的批处理业务处理场景,各个金融机构的往来业务和跨主机系统的业务都会涉及到对账的过程,如大小额支付、银联交易、人行往来、现金管理、POS业务、ATM业务、证券公司资金账户、证券公司与证券结算公司。

全面解析大数据批处理框架Spring Batch,所谓完美解析方案是什么

下面是某行网银的部分日终跑批实例场景需求。

全面解析大数据批处理框架Spring Batch,所谓完美解析方案是什么

涉及到的需求点包括:

  1. 批量的每个单元都需要错误处理和回退;
  2. 每个单元在不同平台中运行;
  3. 需要有分支选择;
  4. 每个单元需要监控和获取单元处理日志;
  5. 提供多种触发规则,按日期,日历,周期触发;

除此之外典型的批处理适用于如下的业务场景:

  1. 定期提交批处理任务(日终处理)
  2. 并行批处理:并行处理任务
  3. 企业消息驱动处理
  4. 大规模的并行处理
  5. 手动或定时重启
  6. 按顺序处理依赖的任务(可扩展为工作流驱动的批处理)
  7. 部分处理:忽略记录(例如在回滚时)
  8. 完整的批处理事务

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

全面解析大数据批处理框架Spring Batch,所谓完美解析方案是什么

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

  • 健壮性:不会因为无效数据或错误数据导致程序崩溃;
  • 可靠性:通过跟踪、监控、日志及相关的处理策略(重试、跳过、重启)实现批作业的可靠执行;
  • 扩展性:通过并发或者并行技术实现应用的纵向和横向扩展,满足海量数据处理的性能需求;

苦于业界真的缺少比较好的批处理框架,Spring Batch是业界目前为数不多的优秀批处理框架(Java语言开发),SpringSource和Accenture(埃森哲)共同贡献了智慧。

全面解析大数据批处理框架Spring Batch,所谓完美解析方案是什么

Accenture在批处理架构上有着丰富的工业级别的经验,贡献了之前专用的批处理体系框架(这些框架历经数十年研发和使用,为Spring Batch提供了大量的参考经验)。

SpringSource则有着深刻的技术认知和Spring框架编程模型,同时借鉴了JCL(Job Control Language)和COBOL的语言特性。2013年JSR-352将批处理纳入规范体系,并被包含在了JEE7之中。这意味着,所有的JEE7应用服务器都会有批处理的能力,目前第一个实现此规范的应用服务器是Glassfish 4。当然也可以在Java SE中使用。

全面解析大数据批处理框架Spring Batch,所谓完美解析方案是什么

但最为关键的一点是:JSR-352规范大量借鉴了Spring Batch框架的设计思路,从上图中的核心模型和概念中可以看出究竟,核心的概念模型完全一致。

通过Spring Batch框架可以构建出轻量级的健壮的并行处理应用,支持事务、并发、流程、监控、纵向和横向扩展,提供统一的接口管理和任务管理。

全面解析大数据批处理框架Spring Batch,所谓完美解析方案是什么

框架提供了诸如以下的核心能力,让大家更关注在业务处理上。更是提供了如下的丰富能力:

  1. 明确分离批处理的执行环境和应用
  2. 将通用核心的服务以接口形式提供
  3. 提供“开箱即用” 的简单的默认的核心执行接口
全面解析大数据批处理框架Spring Batch,所谓完美解析方案是什么 但批处理领域的框架确凤毛麟角。Spring Batch框架提供了对文件分区的支持,实现类org.springframework.batch.core.partition.support.MultiResourcePartitioner提供了对文件分区的默认支持,根据文件名将不同的文件处理进行分区,提升处理的速度和效率,适合有大量小文件需要处理的场景。Step包含了一个实际运行的批处理任务中的所有必需的信息,其实现可以是非常简单的业务实现,也可以是非常复杂的业务处理,Step的复杂程度通常是业务决定的。 阅读详情

相关推荐

Spring 源码硬核解析系列专题(九):Spring Batch 的批处理源码解析

在前几期中,我们从 Spring 核心功能到 Spring Boot、Spring Cloud 和 Spring Security,逐步剖析了 Spring 生态的多个模块。在企业级应用中,批处理是一个常见需求,用于处理大量数据的导入、导出或定时任务。Spring Batch 提供了强大的批处理框架,本篇将深入其源码,揭示其核心机制与实现细节。

资深架构师分享:深入剖析软件架构,探讨云计算、微服务、大数据等前沿技术。分享实践经验,促进技术交流,共同构建卓越系统。 1230

大数据批处理框架Spring Batch 的全面解析

如今微服务架构讨论的如火如荼。但在企业架构里除了大量的OLTP交易外,还存在海量的批处理交易。在诸如银行的金融机构中,每天有3-4万笔的批处理作业需要处理。针对OLTP,业界有大量的开源框架、优秀的架构设计给予支撑;但批处理领域的框架确凤毛麟角。是时候和我们一起来了解下批处理的世界哪些优秀的框架和设计了,今天我将以Spring Batch为例,和大家一起探秘批处理的世界。 批处理典型业务场景 对账...

程序之道的博客 1333

大数据中[Spring Cloud Task]6 Spring Batch批处理应用设计原则

概述本文主要讲述的是Spring的另一个核心子项目 Spring Batch 批处理应用的一些设计技巧和原则。[前方高能,要打瞌睡的朋友们注意了]这些技巧分别涉及原则与技巧应用数据库设计原则多分区批处理应用通常会用到数据库表分表。分表的设计是选取某个索引列作为分表的关键字,将有不同关键字的数据分别存储在不同物理数据库(表)。数据分表架构应有一个中心数据仓库(表),存储表分区参数等元数据。中心数据仓...

weixin_42409490的博客 2230

Springboot 整合 spring batch 实现批处理 ,小白文实例讲解

前言 概念词就不多说了,我简单地介绍下 ,spring batch 是一个 方便使用的 较健全的 批处理 框架。 为什么说是方便使用的,因为这是 基于spring的一个框架,接入简单、易理解、流程分明。 为什么说是较健全的, 因为它提供了往常我们在对大批量数据进行处理时需要考虑到的 日志跟踪、事务粒度调配、可控执行、失败机制、重试机制、数据读写等。 正文 那么回到文章,我们该篇文章将会带来给大家的是什么?(结合实例讲解那是当然的) 从实现的业务场景来说,有以下两个...

默默不代表沉默 2万+

Spring Batch批处理框架实战教程

有了 Spring Boot 的加持,你现在可以完全用 Java 配置的方式来定义 Job,告别 XML 配置文件的时代啦!@Bean🎉");}).build();就这么几行代码,你就拥有了一个完整的批处理任务。这里的是最轻量级的 Step 实现方式,适合做一些一次性操作,比如清理缓存、发送通知等。✅ 提示:和是线程安全的单例对象,可以在多个配置类中共享使用。模式适用场景优点缺点启动即运行每日凌晨清算。

weixin_34162851的博客 766

SpringBoot+Batch实现

spring batch官方文档:https://docs.spring.io/spring-batch spring batch3.x中文文档:http://www.kailing.pub/SpringBatchReference spring batch官方入门实例:https://projects.spring.io/spring-batch/ 简单的任务操作实现,当前项目只是一个demo,我也是初学,目前启动执行完任务boot自动关闭问题还没有解决,代码可供讨论,不能直接使用,哪位大佬解决了一起讨论一下

告别报错!Win10下Autodock Vina 1.2.3保姆级安装与避坑指南

本文提供了Win10系统下Autodock Vina 1.2.3的完整安装与实战指南,涵盖环境配置、分子文件预处理、对接参数优化及结果分析等关键步骤。通过详细的避坑技巧和优化方案,帮助用户高效完成分子对接任务,特别适合生物信息学研究人员和药物发现领域的初学者。

weixin_29969209的博客 400

LlamaIndex 入门实战

LlamaIndex是一个“数据框架”,用于帮助构建LLM应用程序。它提供了各种工具,包括数据连接器,用于摄取现有数据源和数据格式(API,PDF,文档,SQL等),以及用于将数据结构化(索引,图形)以便与LLM轻松使用的方式。此外,LlamaIndex还提供了高级的检索/查询接口,可以输入任何LLM输入提示,并返回检索到的上下文和增强知识的输出。它还允许与外部应用程序框架(如LangChain,Flask,Docker,ChatGPT等)轻松集成。

AIGC搞起 1万+

uniapp串口通信实战:从零搭建物联网设备控制App(附完整代码)

本文详细介绍了如何使用Uniapp实现串口通信,从零搭建物联网设备控制App。内容涵盖环境配置、串口初始化、数据收发、错误处理等核心功能,并提供了完整的代码示例,帮助开发者快速掌握跨平台串口通信技术,适用于智能农业、工业自动化等物联网场景。

weixin_30369041的博客 597

pe卸载win10更新补丁_禁用Win10系统更新

众所周知,最近WIN10的强制更新导致了很多问题。如:(部分专业软件系统更新后无法使用,硬件中键盘、鼠标、指纹之类的硬件,更新补丁后失灵等问题)。而之前的禁用WindowsUpdate的方法已经失效。下面我们另辟蹊径,利用系统权限的方法使Win10无法更新,达到禁用更新的目的。1.计算机管理-服务中禁用Windows Update服务。2.打开C:\Windows\softwareDistribu...

weixin_39702479的博客 1万+

12、有杆泵抽油系统:原理、性能与选择

本文全面介绍了有杆泵抽油系统的原理、性能分析和设备选择方法。有杆泵抽油系统广泛应用于石油开采领域,通过地面抽油装置与井下柱塞泵的配合,实现高效、稳定的原油提升。文章详细解析了系统的工作原理、组成结构、光杆运动特性、载荷计算、泵输送能力及功率需求,并提供了抽油装置的选择流程和实际案例分析。此外,还探讨了泵的容积效率影响因素、示功图的作用及系统优化运行的建议,为石油开采工程提供了理论支持和实践指导。

gan8painter的博客 433

大模型多智能体协作面试题及参考答案

在多智能体系统里,代理定义自身目标或效用函数的过程与系统架构、应用场景紧密相关。从本质上讲,目标是代理行为的导向,而效用函数则是对目标达成程度的量化评估。代理通常依据自身角色、系统全局需求以及与其他代理的交互关系来确立目标。比如在合作型 MAS 中,代理目标可能需要与全局目标对齐,像多个物流机器人协作完成货物配送时,每个机器人的目标会围绕 “高效完成分配任务”“避免路径冲突” 等展开,其效用函数可能涉及任务完成时间、能耗等指标的加权求和。目标定义的方式存在多种类型。

大模型大数据攻城狮的专栏 1022

【python基础】一文掌握 Jupyter Notebook 的使用(超级详细!)

是一个非营利组织,致力于为多种编程语言的交互式计算开发开源软件、开放标准和服务。Jupyter 于 2014 年由 Fernando Pérez 从IPython衍生出来,支持几十种编程语言的执行环境。Jupyter 项目主要开发并支持(.ipynb 文件格式)、JupyterHub和JupyterLab等交互式计算产品。

数据知道的博客 1万+

5.4 GTT BO的内存分配分析

本文分析了AMD GPU驱动中的GTT技术实现。GTT作为GPU页表,负责管理主机内存与GPU虚拟地址的映射,支持大容量内存访问和统一寻址。文章详细介绍了GTT的核心数据结构amdgpu_gtt_mgr、初始化流程,以及BO(Buffer Object)创建时GTT区间的分配与释放机制。GTT管理通过TTM框架实现分层设计,提供内存统计、兼容性检查等接口,并支持动态迁移、多进程隔离等高级特性。该机制为AMD GPU提供了高效灵活的内存管理基础。

图形/计算GPU的驱动与虚拟化技术分享园地 3722

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 亿级请求下多级缓存那些事,你全部吃下了吗?
下一篇: 妹子面试阿里,面试官竟问她有没有男朋友?面试真题「PDF分享」
我是小泽呀!
博客等级 码龄7年 119粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值