批处理框架

举报
cloudskyme 发表于 2018/11/21 15:49:02 2018/11/21
【摘要】 什么是批处理?在现代企业应用当中,面对复杂的业务以及海量的数据,除了通过庞杂的人机交互界面进行各种处理外,还有一类工作,不需要人工干预,只需要定期读入大批量数据,然后完成相应业务处理并进行归档。这类工作即为“批处理”为什么使用Spring BatchSpring Batch 作为 Spring 的子项目,是一款基于 Spring 的企业批处理框架。通过它可以构建出健壮的企业批处理应用。Spr...

什么是批处理?

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

为什么使用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/


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。