




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
并发模块软件开发概要设计文档描述文档名称项目并发模块软件开发概要设计内容简介并发模块概要设计介绍文档变更目录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.1Springbatch介绍164.1.1业务场景164.1.2普通业务流程174.1.3总体架构184.1.4领域模型204.2Quartz介绍204.2.1业务场景204.2.2总体架构214.2.3领域模型224.2.4特点224.3框架整合234.3.1Spring+springbatch+quartz整合234.3.2事务支持234.4代码部署设计244.4.1旧有系统嵌入244.4.2新系统嵌入251 引言 1.1 背景为应对业务快速发展及全业务网上营销的需要,公司迫切需要整合目前的所有系统,进而推出以为主体的电子商务网站。在的实际应用中,常常需要对大批量的数据进行读取、验证、保存及交换等相关的一些操作。各系统自主开发相关的大数据处理模块,有可能会使系统出现如下问题: 代码重复开发,实现代码差异过大,代码维护成本增大 开发人员水平不一,代码质量无法得到保证,可能会产生效率问题,尤其数据量增大后,代码的执行效果无法得到保证因此,需要将大数据量的处理的问题作为项目中一个比较重要的模块独立考虑,并发模块应运而生。1.2 目的本文主要是针对中,可能出现的并发应用的场景进行描述,并对此场景进行需求分析提炼,对并发模块中涉及到的批处理、异步、并发等机制进行阐述,对数据处理涉及到的功能进行概要设计。1.3 术语缩略语序号术语/缩略语全称及说明1231.4 参考资料spring-batch-docs.pdfQuartz Job Scheduling Framework 中文版 V0.9.1.chmQuartz的官方网站:Spring batch的官方网站:/spring-batch/1.5 适用人群 对spring体系结构有一定了解 在springbatchquartz方面有兴趣 在批处理方面遇到不同需求2 需求描述2.1 业务需求经过对项目的调研,有许多涉及到大数据量处理的业务需求:1. 在周末、月末、节日等自动发送大批量信息去提醒或进行业务节点操作2. 生成交费通知书,生成银行转账,保单满期失效等各种批处理。一般这些批处理在晚上没有其它在线业务的时候运行,白天不能运行这些批处理,以免影响在线实时处理。晚上的时间毕竟有限,最低程度也要在整个晚上将这些批处理运行完毕,不能延续到第二天的营业开始时间。2.2 对并发模块的要求 对大数据量进行批量处理 单个任务的并行执行 定制时间节点启动任务 循环任务执行 可以日志记录及进行重启3 模块概述3.1 功能概述并发模块主要处理系统中大数据量批量操作的所有问题。系统可以将所有大批量的周期操作都可以放到此模块中。此模块主要具备的三个方面的功能: 定制时间的功能 作为周期性的操作,肯定会涉及到时间的处理问题,此模块必须有相关的时间定制才能满足此需求 批量数据处理的功能此为基本功能。由大数据量引出的其他功能如,数据启动时的触发,数据中间的处理,处理出错后的补救,数据处理中的事务等一系列的功能,对批量数据处理进行支持 日志功能在数据操作的过程中,对每一个操作步骤及关键节点进行纪录是有益于监控操作过程的,即使操作失败,也方便对过程进行分析3.2 模块范围此模块仅限于处理大批量的周期性的数据,也可以支持非周期性批量数据一次性处理(由于开发成本较高,请慎重使用)。3.3 需求3.3.1 功能需求 时间定制功能通过配置指定任务的执行时间,让任务达到定时启动的目的,或对大批量数据在凌晨定时执行批量处理的业务,缓解日间系统压力。 批处理功能对大数据量进行批量处理的功能 并行处理功能如果业务数据量多达百万千万时,可以通过多线程并行执行的方式,加大CPU及内存利用率,加快处理进度,保证业务完成的时间 重启功能如果任务执行失败,可以对失败的任务进行重启,保证任务执行没有遗漏,或对任务执行可以进行手工干预,保证任务执行的准确度 日志功能对任务执行的每一步都进行日志纪录,便于对系统或任务出现的问题进行分析、处理、回溯等。3.3.2 非功能需求 易用性各系统在使用及配置此模块时,尽量少的进行二次开发,以此来降低实施风险,减少实施周期 性能由于此模块使用嵌入式的开发,需要模块开发完成后,进行比较充分的测试以保证模块的正确及快速运行,满足系统的要求,并使之不成为系统瓶颈。 可用性在并发模块完成部署后,可以对系统进行相关的测试,如果影响效率,还可以对此模块进行独立部署,提高模块的可用性 可扩展性模块基于spring框架为基础,springbatch+quartz作为spring的插件进行整合,可以及时进行相关的替换及升级,在spring上的插件也非常多,可以保证此模块的扩展性3.3.3 机制描述 异步机制.1 机制描述发起任务请求者可以在发送消息后进行其它的工作,不用等待接收者的回应,而接收者也不必在接到请求后立即对发送者的请求进行处理。.2 模块应用场景场景:调用者与并发模块之间解藕 并发机制.1 机制描述当数据量非常巨大时,需要系统提供多个线程来并行处理同一批数据,在处理过程中避免出现漏读,脏读,重读等出错情况,如果出现以上出错情况能够及时、有效、自动地去进行相关的处理或提示的一种机制。.2 模块应用场景场景一:本机的并发处理场景二:分布式并发处理3.4 运行环境3.4.1 开发环境硬件环境:cpu主频2.0G以上,内存2G以上软件环境:操作系统:win7winxplinux开发语言:java6.0统一开发工具:eclipse3.6.2数据库:oracle10G中间件:tomcat6.0weblogic9.2weblogic10网络环境:联网,网络带宽2M左右3.4.2 部署环境与各系统部署在一起3.5 设计和实现约束开发框架为:java开源框架 springbatch+quartz4 模块整体设计由于目前已经有比较成熟的开源框架支持批处理的需求,所以本方案拟选用开源框架spring+springbatch+quartz。此种做法可以借助开源框架比较成熟的代码,减少研究的难度,加强框架扩展性,减少研发周期,加快实际应用进度。4.1 Springbatch介绍4.1.1 业务场景n 周期性的提交批处理n 把一个任务并行处理n 消息驱动应用分级处理n 大规模并行批处理n 手动或调度使任务失败之后重新启动n 有依赖步骤的顺序执行(使用工作流驱动扩展) 处理时跳过部分记录n 成批事务:为小批量的或有的存储过程/脚本的场景使用4.1.2 普通业务流程如上图,展示了一个简单的批处理流程:多个文件输入对文件进行解析后生成批量数据对数据进行转换对数据校验商业逻辑处理生成xml文件或sql存入数据库4.1.3 总体架构 组件这种分层结构突出三大高层次上的组件:应用、核心、基础服务。应用包括开发的客户化代码及所有批量任务。核心包括发起任务及控制一个任务必须的核心运行类。它还包括JobLauncher, Job,Step实现。应用和核心是建立在一个共同的基础服务之上。基础服务包括普通的读操作、写操作和一些基本服务,如RetryTemplate,这个模块在应用开发(ItemReader和ItemWriter)及核心组件中都有使用。 与spring的关系图Core和Infrastructure都必须基于Spring的框架运行,Application任务可以在配置文件中进行配置,Core会根据配置情况,调度Infrastructure组件中提供的服务去执行Application任务,Application任务在代码中也可以调用Infrastructure完成自己的部分任务4.1.4 领域模型批处理的基本领域模型如下: JopRepository(任务库) 对批量数据持久化进行的操作 JobLauncher(任务启动器) 启动任务,抛出运行过程中出的错误 Job(任务) 一个任务会分多个步骤 Step(步骤) ItemReader事项读、ItemProcessor事项处理、ItemWriter事项写4.2 Quartz介绍4.2.1 业务场景 在一天中的任意时刻(可以精确到毫秒)。 一周中特定的一些天。 一个月中特定的一些天。 一年中特定的一些天 不在日历列表中注册的一些天(比如节假日)。 循环特定的次数。 循环到特定的时间。 无限循环。 按照一定的时间间隔循环。4.2.2 总体架构主要有三大组件:SchedulerFactoryBean主要对任务及触发进行监听并启动相关的操作。JobDetail对任务进行描述及具体的业务逻辑操作。Trigger对任务启动时间要求的各种配置解析。4.2.3 领域模型 Calendar(日历):提供对时间的支持 Trigger(触发器):根据时间配置对任务任务进行调度 ThreadPool(线程池):对多个任务同时触发后的情况进行线程调度及性能优化处理 SchedulerContext(调度配置文件):调度核心文件,用来配置任务及触发条件 JobDetail(任务):对任务进行描述及相关业务逻辑操作4.2.4 特点 Quartz能嵌入到任何独立的应用中运行。 Quartz能在应用服务器或者Servlet容器中实例化,并且能够参与XA事务。 Quartz能够以独立的方式运行(在它自己的Java虚拟机中),可以通过RMI使用Quartz。 Quartz可以被实例化为独立程序的集群(有负载均衡和容错能力)。4.3 框架整合4.3.1 Spring+springbatch+quartz整合1. 引入相关的jar包,包括springspringbatchquartz的所有jar包2. 配置文件进行相关的配置,具体请参看项目并发模块部署使用说明手册4.3.2 事务支持 声明性事务应用场景:代码可以本地调用,不需要引入第三模块代码,接口的情况下,使用声明性事务 编程性事务应用场景:调用第三方模块、相关系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年物联网工程技术高级考试模拟试题及复习策略指导
- 2025年煤气安全操作规范学习笔记与考试重点梳理
- 甲醇安全知识培训资料课件
- 优翼数学高中教学课件
- 甩头试验课件
- 湖北省黄石市两区联考2024-2025学年八年级下学期期末历史试题
- 2024-2025学年河北省邯郸市七年级(下)期末数学试卷(含答案)
- 用电安全知识培训班课件
- 生鲜食品安全知识培训课件
- 生物类基础知识培训课件
- 2023年临沧市市级单位遴选(选调)工作人员考试真题
- (正式版)JTT 1172.2-2023 系列2集装箱 技术要求和试验方法 第2部分:保温集装箱
- 高韧性彩色氧化锆陶瓷的制备及性能研究
- 乡村规划设计案例分析报告
- 兽医公共卫生学第十六章 兽医公共卫生监督管理概述
- 高三心理健康课件
- CorelDRAW实例教程(CorelDRAW 2020)全套教学课件
- 绿色制造技术在专用车辆制造业的应用研究
- 血液内科护理查房
- 个人起诉装修公司诉状
- 五年级数学竞赛试卷
评论
0/150
提交评论