• SpringBatch的初步了解


      一、SpringBatch是一个批处理的框架,作为一个Spring组件,提供了通过使用Spring的依赖注入来处理批处理的条件。

      什么是批处理呢?

    在现代企业应用当中,面对复杂的业务以及海量的数据,除了通过庞杂的人机交互界面进行各种处理外,还有一类工作,不需要人工干预,只需要定期读入大批量数据,然后完成相应业务处理并进行归档。这类工作即为“批处理”。比如近期金融项目中的撮合功能,不需要人工干预,自动对借款人和出借人进行匹配撮合,完成借贷功能。

    从上面的描述可以看出,批处理应用有如下几个特点:

      • 数据量大,少则百万,多则上亿的数量级。
      • 不需要人工干预,由系统根据配置自动完成。
      • 与时间相关,如每天执行一次或每月执行一次。

    同时,批处理应用又明显分为三个环节:

      • 读数据,数据可能来自文件、数据库或消息队列等
      • 数据处理,如电信支撑系统的计费处理
      • 写数据,将输出结果写入文件、数据库或消息队列等

    因此,从系统架构上,应重点考虑批处理应用的事务粒度、日志监控、执行、资源管理(尤其存在并发的情况下)。从系统设计上,应重点考虑数据读写与业务处理的解耦,提高复用性以及可测试性。

      二、SpringBatch的业务场景有:

    • 周期性的提交批处理
    • 把一个任务并行处理
    • 消息驱动应用分级处理
    • 大规模并行批处理
    • 手工或调度使用任务失败之后重新启动
    • 有依赖步骤的顺序执行(使用工作流驱动扩展)
    • 处理时跳过部分记录
    • 成批事务:为小批量的或有的存储过程/脚本的场景使用

      三、SpringBatch的架构图

      SpringBatch使用三层架构,三层分别为应用、核心和基础服务。

      

      细化的体系结构

      

      

      应用层:包含所有的批处理作业,通过Spring框架管理程序员自定义的代码。

      核心层:包含了Batch启动和控制所需要的核心类,如:JobLauncher、Job和step等。

      基础服务层:应用层和核心层建立在基础服务层即基础架构层智商,基础架构层提供共通的读(ItemReader)、写(ItemWriter)和服务(如RetryTemplate:重试模块,可以被应用层和核心层使用)。

      另外我们还需要知道,Spring Batch 是一款批处理应用框架,不是调度框架。它只关注批处理任务相关的问题,如事务、并发、监控、执行等,并不提供相应的调度功能。因此,如果我们希望批处理任务定期执行,可结合 Quartz 等成熟的调度框架实现。

  • 相关阅读:
    领域驱动设计(Domain Driven Design)
    程序员的梦想:意图编程
    怎样才算是好的软件可维护性设计?
    微软的patternshare.org初步体验
    转:JDepend:管理代码依赖性
    MAB, 专用的amazon浏览器,有点意思!
    宾夕法尼亚大学沃顿商学院:沃顿知识在线
    我的笔记本的鼠标又乱跑了!寻求帮助!
    能否让博客园对Firefox支持得好一些!
    交互设计:《About Face 2.0》中译本精彩节选
  • 原文地址:https://www.cnblogs.com/jyh317/p/4063666.html
Copyright © 2020-2023  润新知