一文搞懂大数据批量处理框架SpringBatch的完美解析方案是什么。

如题所述

1. 微服务架构的讨论正热烈进行中,但在企业架构中,除了大量的在线事务处理(OLTP)交易外,还存在大量的批处理交易。例如,在银行等金融机构中,每天需要处理多达3-4万笔的批处理作业。
2. 针对OLTP,业界有大量的开源框架和优秀的架构设计。然而,在批处理领域,这样的框架却相对较少。是时候探索批处理的世界,了解哪些优秀的框架和设计,今天我们将以SpringBatch为例,一起探秘批处理的世界。
3. 批处理典型场景包括对账,这是各个金融机构的往来业务和跨主机系统的业务都会涉及到的过程,如大小额支付、银联交易、人行往来、现金管理、POS业务、ATM业务、证券公司资金账户、证券公司与证券结算公司等。
4. 批处理适用于如下的业务场景:定期提交批处理任务(日终处理)、并行批处理、企业消息驱动处理、大规模的并行处理、手动或定时重启、按顺序处理依赖的任务(可扩展为工作流驱动的批处理)、部分处理(忽略记录,例如在回滚时)和完整的批处理事务。
5. 批处理作业的两个典型特征是批量执行和自动执行(需要无人值守)。前者能够处理大批量数据的导入、导出和业务逻辑计算;后者无需人工干预,能够自动化执行批量任务。
6. 在关注其基本功能之外,还需要关注如下的几点:健壮性、可靠性、扩展性。
7. SpringBatch是业界目前为数不多的优秀批处理框架之一,由SpringSource和Accenture共同贡献。SpringBatch框架提供了轻量级的健壮的并行处理应用,支持事务、并发、流程、监控、纵向和横向扩展,提供统一的接口管理和任务管理。
8. 框架提供了明确分离批处理的执行环境和应用、通用核心的服务以接口形式提供、"开箱即用"的简单的默认的核心执行接口、Spring框架中配置、自定义、和扩展服务等核心能力。
9. 框架还提供了丰富的能力,如作业的抽象与继承、明确分离批处理的执行环境和应用、提供“开箱即用”的简单的默认的核心执行接口、提供Spring框架中配置、自定义、和扩展服务等。
10. 框架对于事务的支持能力包括:Chunk支持事务管理,通过commit-interval设置每次提交的记录数;支持对每个Tasklet设置细粒度的事务配置:隔离界别、传播行为、超时;支持rollback和norollback,通过skippable-exception-classes和no-rollback-exception-classes进行支撑;支持JMSQueue的事务级别配置。
11. 框架资深的模型抽象方面,SpringBatch也做了极为精简的抽象。仅仅使用六张业务表存储了所有的元数据信息(包括Job、Step的实例,上下文,执行器信息,为后续的监控、重启、重试、状态恢复等提供了可能)。
12. 实现作业的健壮性与扩展性,批处理要求Job必须有较强的健壮性,通常Job是批量处理数据、无人值守的,这要求在Job执行期间能够应对各种发生的异常、错误,并对Job执行进行有效的跟踪。
13. 框架提供了支持上面所有能力的特性,包括Skip(跳过记录处理)、Retry(重试给定的操作)、Restart(从错误点开始重新启动失败的Job):Skip,在对数据处理期间,如果数据的某几条的格式不能满足要求,可以通过Skip跳过该行记录的处理,让Processor能够顺利的处理其余的记录行。Retry,将给定的操作进行多次重试,在某些情况下操作因为短暂的异常导致执行失败,如网络连接异常、并发处理异常等,可以通过重试的方式避免单次的失败,下次执行操作时候网络恢复正常,不再有并发的异常,这样通过重试的能力可以有效的避免这类短暂的异常。Restart,在Job执行失败后,可以通过重启功能来继续完成Job的执行。在重启时候,批处理框架允许在上次执行失败的点重新启动Job,而不是从头开始执行,这样可以大幅提高Job执行的效率。
14. 对于扩展性,框架提供的扩展能力包括如下的四种模式:MultithreadedStep多线程执行一个Step;ParallelStep通过多线程并行执行多个Step;RemoteChunking在远端节点上执行分布式Chunk操作;PartitioningStep对数据进行分区,并分开执行。
15. 批处理框架在扩展性上提供了4中不同能力,每种都是各自的使用场景,我们可以根据实际的业务需要进行选择。
16. SpringBatch批处理框架虽然提供了4种不同的监控方式,但从目前的使用情况来看,都不是非常的友好。通过DB直接查看,对于管理人员来讲,真的不忍直视;通过API实现自定义的查询,这是程序员的天堂,确实运维人员的地狱;提供了Web控制台,进行Job的监控和操作,目前提供的功能太,无法直接用于生产;提供JMX查询方式,对于非开发人员太不友好。
17. 企业需要统一的批处理平台来处理复杂的企业批处理应用,批处理平台需要解决作业的统一调度、批处理作业的集中管理和管控、批处理作业的统一监控等能力。
18. 企业级批处理平台需要在SpringBatch批处理框架的基础上,集成调度框架,通过调度框架可以将任务按照企业的需求进行任务的定期执行;丰富目前SpringBatchAdmin(SpringBatch的管理监控平台,目前能力比较薄弱)框架,提供对Job的统一管理功能,增强Job作业的监控、预警等能力;通过与企业的组织机构、权限管理、认证系统进行合理的集成,增强平台对Job作业的权限控制、安全管理能力。
19. 欢迎大家在实际业务中使用SpringBatch框架。最后的话觉得还不错可以转发关注支持一波~私信【架构资料】获取一些我私人整理的Java进阶资料!为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀。而你是不是还在满足于现状且内心在窃喜?“对于程序员来说,如果哪一天开始他停止了学习,那么他的职业生涯便开始宣告消亡。”所以行动起来,学习起来!
温馨提示:内容为网友见解,仅供参考
无其他回答

一文搞懂大数据批量处理框架Spring Batch的完美解析方案是什么。
苦于业界真的缺少比较好的批处理框架,SpringBatch是业界目前为数不多的优秀批处理框架(Java语言开发),SpringSource和Accenture(埃森哲)共同贡献了智慧。Accenture在批处理架构上有着丰富的工业级别的经验,贡献了之前专用的批处理体系框架(这些框架历经数十年研发和使用,为SpringBatch提供了大量的参考经验)。SpringSource则...

一文搞懂大数据批量处理框架SpringBatch的完美解析方案是什么。
1. 微服务架构的讨论正热烈进行中,但在企业架构中,除了大量的在线事务处理(OLTP)交易外,还存在大量的批处理交易。例如,在银行等金融机构中,每天需要处理多达3-4万笔的批处理作业。2. 针对OLTP,业界有大量的开源框架和优秀的架构设计。然而,在批处理领域,这样的框架却相对较少。是时候探索批处...

相似回答
大家正在搜