zoukankan      html  css  js  c++  java
  • 批处理框架

    什么是批处理?

    在现代企业应用当中,面对复杂的业务以及海量的数据,除了通过庞杂的人机交互界面进行各种处理外,还有一类工作,不需要人工干预,只需要定期读入大批量数据,然后完成相应业务处理并进行归档。这类工作即为“批处理”

    为什么使用Spring Batch

    Spring Batch 作为 Spring 的子项目,是一款基于 Spring 的企业批处理框架。通过它可以构建出健壮的企业批处理应用。Spring Batch 不仅提供了统一的读写接口、丰富的任务处理方式、灵活的事务管理及并发处理,同时还支持日志、监控、任务重启与跳过等特性,大大简化了批处理应用开发,将开发人员从复杂的任务配置管理过程中解放出来,使他们可以更多地去关注核心的业务处理过程。

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

    Spring Batch的整体架构

    分三层:应用层,核心层,基础设施层。应用层包括所有的batch任务和用户开发的代码。核心层包括在运行期运行一个任务所需要的类,例如:JobLauncher,Job和Step的实现。应用和核心层都在基础设施层之上,基础设施层包括通用的读写器(readers and writers)以及如RetryTemplate等服务。

    Spring Batch 结构

    Spring Batch 流程

    Step执行过程

    应用场景

    • 定期提交批处理任务
    • 并发批处理:并行执行任务
    • 分阶段,企业消息驱动处理
    • 高并发批处理任务
    • 失败后手动或定时重启
    • 按顺序处理任务依赖(使用工作流驱动的批处理插件)
    • 局部处理:跳过记录(例如在回滚时)
    • 完整的批处理事务:因为可能有小数据量的批处理或存在存储过程/脚本

    后续计划:

    对现有数据量使用多线程的方式处理,根据业务量扩展,可以配置成多进程加多线程方式处理。对于海量数据,使用集群,短期内应该不会达到。

    备注

    官网:https://projects.spring.io/spring-batch/

    相关介绍:http://blog.jobbole.com/109857/

    https://www.ibm.com/developerworks/cn/java/j-lo-springbatch1/

    我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan

  • 相关阅读:
    HDU 5528 Count a * b 欧拉函数
    HDU 5534 Partial Tree 完全背包
    HDU 5536 Chip Factory Trie
    HDU 5510 Bazinga KMP
    HDU 4821 String 字符串哈希
    HDU 4814 Golden Radio Base 模拟
    LA 6538 Dinner Coming Soon DP
    HDU 4781 Assignment For Princess 构造
    LA 7056 Colorful Toy Polya定理
    LA 6540 Fibonacci Tree
  • 原文地址:https://www.cnblogs.com/skyme/p/7524764.html
Copyright © 2011-2022 走看看