『埃尔法哥哥』一文搞懂大数据批量处理框架Spring Batch的完美解析方案是什么
如今微服务架构讨论的如火如荼 。 但在企业架构里除了大量的OLTP交易外 , 还存在海量的批处理交易 。 在诸如银行的金融机构中 , 每天有3-4万笔的批处理作业需要处理 。 针对OLTP , 业界有大量的开源框架、优秀的架构设计给予支撑;但批处理领域的框架确凤毛麟角 。 是时候和我们一起来了解下批处理的世界哪些优秀的框架和设计了 , 今天我将以Spring Batch为例 , 和大家一起探秘批处理的世界 。
初识批处理典型场景
探秘领域模型及关键架构
实现作业健壮性与扩展性
批处理框架的不足与增强
批处理典型业务场景
对账是典型的批处理业务处理场景 , 各个金融机构的往来业务和跨主机系统的业务都会涉及到对账的过程 , 如大小额支付、银联交易、人行往来、现金管理、POS业务、ATM业务、证券公司资金账户、证券公司与证券结算公司 。
本文插图
【『埃尔法哥哥』一文搞懂大数据批量处理框架Spring Batch的完美解析方案是什么】
下面是某行网银的部分日终跑批实例场景需求 。
本文插图
涉及到的需求点包括:
批量的每个单元都需要错误处理和回退;
每个单元在不同平台中运行;
需要有分支选择;
每个单元需要监控和获取单元处理日志;
提供多种触发规则 , 按日期 , 日历 , 周期触发;
除此之外典型的批处理适用于如下的业务场景:
定期提交批处理任务(日终处理)
并行批处理:并行处理任务
企业消息驱动处理
大规模的并行处理
手动或定时重启
按顺序处理依赖的任务(可扩展为工作流驱动的批处理)
部分处理:忽略记录(例如在回滚时)
完整的批处理事务
与OLTP类型交易不同 , 批处理作业两个典型特征是批量执行与自动执行(需要无人值守):前者能够处理大批量数据的导入、导出和业务逻辑计算;后者无需人工干预 , 能够自动化执行批量任务 。
本文插图
在关注其基本功能之外 , 还需要关注如下的几点:
健壮性:不会因为无效数据或错误数据导致程序崩溃;
可靠性:通过跟踪、监控、日志及相关的处理策略(重试、跳过、重启)实现批作业的可靠执行;
扩展性:通过并发或者并行技术实现应用的纵向和横向扩展 , 满足海量数据处理的性能需求;
苦于业界真的缺少比较好的批处理框架 , Spring Batch是业界目前为数不多的优秀批处理框架(Java语言开发) , SpringSource和Accenture(埃森哲)共同贡献了智慧 。
本文插图
Accenture在批处理架构上有着丰富的工业级别的经验 , 贡献了之前专用的批处理体系框架(这些框架历经数十年研发和使用 , 为Spring Batch提供了大量的参考经验) 。
SpringSource则有着深刻的技术认知和Spring框架编程模型 , 同时借鉴了JCL(Job Control Language)和COBOL的语言特性 。 2013年JSR-352将批处理纳入规范体系 , 并被包含在了JEE7之中 。 这意味着 , 所有的JEE7应用服务器都会有批处理的能力 , 目前第一个实现此规范的应用服务器是Glassfish 4 。 当然也可以在Java SE中使用 。
本文插图
但最为关键的一点是:JSR-352规范大量借鉴了Spring Batch框架的设计思路,从上图中的核心模型和概念中可以看出究竟 , 核心的概念模型完全一致 。
推荐阅读
- 「」儿童节就送阿尔法蛋学习手表,安全贴心又能学习
- -悟空哥哥-618年中大促力来袭,iQOO Neo3应该是你不容错过的5G手机
- 埃尔法哥哥面对用户需求与AI技术之间的不平衡,AI产品经理该如何做?
- 埃尔法哥哥谁说机器学习难?它在这朵云上就没有门槛
- 埃尔法哥哥Python基础语法之“数据应用”
- 埃尔法哥哥Bionumerics软件的多位点VNTR分析
- 埃尔法哥哥一个例子就能读懂大数据,原来数据分析能在这些行业里使用
- 埃尔法哥哥C++程序员的职业生涯规划
- 埃尔法哥哥MAML-Tracker:用目标检测思路做目标跟踪?小样本即可得高准确率丨CVPR 2020
- 埃尔法哥哥数据规范之代码表
