为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

SpringBatch在实际应用中的设计

2019-04-07 20页 doc 592KB 21阅读

用户头像 个人认证

swp3762153

暂无简介

举报
SpringBatch在实际应用中的设计并发模块软件开发概要设计文档描述 文档名称 项目并发模块软件开发概要设计 内容简介 并发模块概要设计介绍文档变更目录1 引言 61.1 背景 61.2 目的 61.3 术语缩略语 71.4 参考资料 71.5 适用人群 72 需求描述 82.1 业务需求 82.2 对并发模块的要求 83 模块概述 93.1 功能概述 93.2 模块范围 103.3 需求 103.3.1 功能需求 103.3.2 非功能需求 113.3.3 机制描述 123.4 运行环境 143.4.1 开发环境 143.4.2 部署环境 153.5 设计和实...
SpringBatch在实际应用中的设计
并发模块软件开发概要文档描述 文档名称 项目并发模块软件开发概要设计 内容简介 并发模块概要设计介绍文档变更目录1 引言 61.1 背景 61.2 目的 61.3 术语缩略语 71.4 参考资料 71.5 适用人群 72 需求描述 82.1 业务需求 82.2 对并发模块的要求 83 模块概述 93.1 功能概述 93.2 模块范围 103.3 需求 103.3.1 功能需求 103.3.2 非功能需求 113.3.3 机制描述 123.4 运行环境 143.4.1 开发环境 143.4.2 部署环境 153.5 设计和实现约束 154 模块整体设计 164.1 Springbatch介绍 164.1.1 业务场景 164.1.2 普通业务 174.1.3 总体架构 184.1.4 领域模型 204.2 Quartz介绍 204.2.1 业务场景 204.2.2 总体架构 214.2.3 领域模型 224.2.4 特点 224.3 框架整合 234.3.1 Spring+springbatch+quartz整合 234.3.2 事务支持 234.4 代码部署设计 244.4.1 旧有系统嵌入 244.4.2 新系统嵌入 25引言背景为应对业务快速发展及全业务网上营销的需要,公司迫切需要整合目前的所有系统,进而推出以为主体的电子商务网站。在的实际应用中,常常需要对大批量的数据进行读取、验证、保存及交换等相关的一些操作。各系统自主开发相关的大数据处理模块,有可能会使系统出现如下问题:·代码重复开发,实现代码差异过大,代码维护成本增大·开发人员水平不一,代码质量无法得到保证,可能会产生效率问题,尤其数据量增大后,代码的执行效果无法得到保证因此,需要将大数据量的处理的问题作为项目中一个比较重要的模块独立考虑,并发模块应运而生。目的本文主要是针对中,可能出现的并发应用的场景进行描述,并对此场景进行需求分析提炼,对并发模块中涉及到的批处理、异步、并发等机制进行阐述,对数据处理涉及到的功能进行概要设计。术语缩略语 序号 术语/缩略语 全称及说明 1 2 3 参考资料spring-batch-docs.pdfQuartzJobSchedulingFramework中文版V0.9.1.chmQuartz的官方网站:www.quartz-scheduler.orgSpringbatch的官方网站:www.springsource.org/spring-batch/适用人群·对spring体系结构有一定了解·在springbatch\quartz方面有兴趣·在批处理方面遇到不同需求需求描述业务需求经过对项目的调研,有许多涉及到大数据量处理的业务需求:1.在周末、月末、节日等自动发送大批量信息去提醒或进行业务节点操作2.生成交费通知,生成银行转账,保单满期失效等各种批处理。一般这些批处理在晚上没有其它在线业务的时候运行,白天不能运行这些批处理,以免影响在线实时处理。晚上的时间毕竟有限,最低程度也要在整个晚上将这些批处理运行完毕,不能延续到第二天的营业开始时间。对并发模块的要求·对大数据量进行批量处理·单个任务的并行执行·定制时间节点启动任务·循环任务执行·可以日志记录及进行重启模块概述功能概述并发模块主要处理系统中大数据量批量操作的所有问题。系统可以将所有大批量的周期操作都可以放到此模块中。此模块主要具备的三个方面的功能:·定制时间的功能作为周期性的操作,肯定会涉及到时间的处理问题,此模块必须有相关的时间定制才能满足此需求·批量数据处理的功能 此为基本功能。由大数据量引出的其他功能如,数据启动时的触发,数据中间的处理,处理出错后的补救,数据处理中的事务等一系列的功能,对批量数据处理进行支持·日志功能 在数据操作的过程中,对每一个操作步骤及关键节点进行纪录是有益于监控操作过程的,即使操作失败,也方便对过程进行分析模块范围此模块仅限于处理大批量的周期性的数据,也可以支持非周期性批量数据一次性处理(由于开发成本较高,请慎重使用)。需求功能需求·时间定制功能通过配置指定任务的执行时间,让任务达到定时启动的目的,或对大批量数据在凌晨定时执行批量处理的业务,缓解日间系统压力。·批处理功能对大数据量进行批量处理的功能·并行处理功能如果业务数据量多达百万千万时,可以通过多线程并行执行的方式,加大CPU及内存利用率,加快处理进度,保证业务完成的时间·重启功能如果任务执行失败,可以对失败的任务进行重启,保证任务执行没有遗漏,或对任务执行可以进行手工干预,保证任务执行的准确度·日志功能对任务执行的每一步都进行日志纪录,便于对系统或任务出现的问题进行分析、处理、回溯等。非功能需求·易用性各系统在使用及配置此模块时,尽量少的进行二次开发,以此来降低实施风险,减少实施周期·性能由于此模块使用嵌入式的开发,需要模块开发完成后,进行比较充分的测试以保证模块的正确及快速运行,满足系统的要求,并使之不成为系统瓶颈。·可用性在并发模块完成部署后,可以对系统进行相关的测试,如果影响效率,还可以对此模块进行独立部署,提高模块的可用性·可扩展性模块基于spring框架为基础,springbatch+quartz作为spring的插件进行整合,可以及时进行相关的替换及升级,在spring上的插件也非常多,可以保证此模块的扩展性机制描述异步机制机制描述发起任务请求者可以在发送消息后进行其它的工作,不用等待接收者的回应,而接收者也不必在接到请求后立即对发送者的请求进行处理。模块应用场景场景:调用者与并发模块之间解藕并发机制机制描述当数据量非常巨大时,需要系统提供多个线程来并行处理同一批数据,在处理过程中避免出现漏读,脏读,重读等出错情况,如果出现以上出错情况能够及时、有效、自动地去进行相关的处理或提示的一种机制。模块应用场景场景一:本机的并发处理场景二:分布式并发处理运行环境开发环境硬件环境:cpu主频2.0G以上,内存2G以上软件环境:操作系统:win7\winxp\linux开发语言:java6.0统一开发工具:eclipse3.6.2数据库:oracle10G中间件:tomcat6.0\weblogic9.2\weblogic10网络环境: 联网,网络带宽2M左右部署环境与各系统部署在一起设计和实现约束开发框架为:java开源框架springbatch+quartz模块整体设计由于目前已经有比较成熟的开源框架支持批处理的需求,所以本拟选用开源框架spring+springbatch+quartz。此种做法可以借助开源框架比较成熟的代码,减少研究的难度,加强框架扩展性,减少研发周期,加快实际应用进度。Springbatch介绍业务场景· 周期性的提交批处理·把一个任务并行处理·消息驱动应用分级处理·大规模并行批处理·手动或调度使任务失败之后重新启动·有依赖步骤的顺序执行(使用工作流驱动扩展)处理时跳过部分记录·成批事务:为小批量的或有的存储过程/脚本的场景使用普通业务流程如上图,展示了一个简单的批处理流程:多个文件输入→对文件进行解析后生成批量数据→对数据进行转换→对数据校验→商业逻辑处理→生成xml文件或sql存入数据库总体架构组件这种分层结构突出三大高层次上的组件:应用、核心、基础服务。应用包括开发的客户化代码及所有批量任务。核心包括发起任务及控制一个任务必须的核心运行类。它还包括JobLauncher,Job,Step实现。应用和核心是建立在一个共同的基础服务之上。基础服务包括普通的读操作、写操作和一些基本服务,如RetryTemplate,这个模块在应用开发(ItemReader和ItemWriter)及核心组件中都有使用。与spring的关系图Core和Infrastructure都必须基于Spring的框架运行,Application任务可以在配置文件中进行配置,Core会根据配置情况,调度Infrastructure组件中提供的服务去执行Application任务,Application任务在代码中也可以调用Infrastructure完成自己的部分任务领域模型批处理的基本领域模型如下:·JopRepository(任务库)对批量数据持久化进行的操作·JobLauncher(任务启动器)启动任务,抛出运行过程中出的错误·Job(任务)一个任务会分多个步骤·Step(步骤)ItemReader事项读、ItemProcessor事项处理、ItemWriter事项写Quartz介绍业务场景·在一天中的任意时刻(可以精确到毫秒)。·一周中特定的一些天。·一个月中特定的一些天。·一年中特定的一些天·不在日历列中注册的一些天(比如节假日)。·循环特定的次数。·循环到特定的时间。·无限循环。·按照一定的时间间隔循环。总体架构主要有三大组件:SchedulerFactoryBean主要对任务及触发进行监听并启动相关的操作。JobDetail对任务进行描述及具体的业务逻辑操作。Trigger对任务启动时间要求的各种配置解析。领域模型·Calendar(日历):提供对时间的支持·Trigger(触发器):根据时间配置对任务任务进行调度·ThreadPool(线程池):对多个任务同时触发后的情况进行线程调度及性能优化处理·SchedulerContext(调度配置文件):调度核心文件,用来配置任务及触发条件·JobDetail(任务):对任务进行描述及相关业务逻辑操作特点·Quartz能嵌入到任何独立的应用中运行。·Quartz能在应用服务器或者Servlet容器中实例化,并且能够参与XA事务。·Quartz能够以独立的方式运行(在它自己的Java虚拟机中),可以通过RMI使用Quartz。·Quartz可以被实例化为独立程序的集群(有负载均衡和容错能力)。框架整合Spring+springbatch+quartz整合1.引入相关的jar包,包括spring\springbatch\quartz的所有jar包2.配置文件进行相关的配置,具体请参看《项目并发模块部署使用说明手册》事务支持声明性事务应用场景:代码可以本地调用,不需要引入第三模块代码,接口的情况下,使用声明性事务编程性事务应用场景:调用第三方模块、相关系统的接口、远程接口时需要使用编程来控制事务代码部署设计旧有系统嵌入非spring的架构或spring早期版本架构两个应用共同连接同一台数据库服务器,在同一台应用服务器上部署,批处理代码在批处理模块中进行开发Spring3.0.5架构新系统嵌入思路:对新系统的主要配置文件进行更改配置,按部署说明进行部署本文档内容涉及安邦财产保险股份有限公司商业秘密,不得以任何形式披露、传播或扩散。第2页共25页��批处理模块数据库应用服务器业务模块�代码融合业务系统数据库配置文件融合应用服务器
/
本文档为【SpringBatch在实际应用中的设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索