web批量框架技术交底书撰写

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

web批量框架技术发明名称:web批量框架本专利发明人:张青技术交底书撰写人及技术联系人:张青电话:13475319804FAX:______E-MAIL:zhang_qing1@cvicse.com该技术应用产品:各类业务系统批量.1术语解释:日终批量:银行所有当日业务,会在每天的12点左右,进行批处理,将当天业务计入账户,更改账户信息,是批量进行的,故有此称。.2本发明要解决的技术问题是什么?对应现有技术的所有缺点:在许多银行运维中,晚间批量是每天都要做的,随着业务的发展晚间批量的按时完成成为必须,因为要保证第二天业务的正常办理。这就要求:批量问题可时时监控,一旦有问题可以及时处理,而且批量问题处理完成之后要支持重跑,不能断批。2020-1-21版权所有,侵权必究第2页,共14页批量要高效,要在规定的时间内完成,所以技术上要求批量并行;批量断批中要求可以手工出发,任务从出错点继续执行。随着业务的发展各个银行机构的数据量日益增长,大规模数据处理成为批量必须面对的问题。2、详细介绍技术背景,实现方案中创软件批处理框架基于以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。提供大量的,可重复的数据处理功能,包括日志记录/跟踪,事务管理,作业处理统计工作重新启动、跳过,和资源管理等重要功能。业务方案:1、批处理定期提交。2、并行批处理:并行处理工作。3、企业消息驱动处理4、大规模的并行处理5、手动或是有计划的重启6、局部处理:跳过记录(如:回滚)技术目标:1、利用Spring编程模型:使程序员专注于业务处理,让Spring框架管理流程。2020-1-21版权所有,侵权必究第3页,共14页2、明确分离批处理的执行环境和应用。3、提供核心的,共通的接口。4、提供开箱即用(outofthebox)的简单的默认的核心执行接口。5、提供Spring框架中配置、自定义、和扩展服务。6、所有存在的核心服务可以很容的被替换和扩展,不影响基础层。7、提供一个简单的部署模式,利用Maven构建独立的Jar文件。这种分层结构有三个重要的组成部分:应用层、核心层、基础架构层。应用层包含所有的批处理作业,通过Spring框架管理程序员自定义的代码。核心层包含了Batch启动和控制所需要的核心类,如:JobLauncher、Job和step等。应用层和核心层建立在基础构架层之上,基础构架层提供共通的读(ItemReader)、写(ItemWriter)、和服务(如RetryTemplate:重试模块。可以被应用层和核心层使用)。2020-1-21版权所有,侵权必究第4页,共14页.3环境依赖开发环境配置批处理应用框架使用了自定义的XMLSchema,为了在Eclipse中可以提供语法提示与校验功能,需要进行如下配置:1、Eclipse主菜单WindowsPreferencesXMLXMLCatalog2、选中UserSpecifiedEntries后点击Add…弹出AddXMLCatalogElement对话框3、点击Workspace…选择本文档所在目录中的xcom-batch-1.0.xsd文件后点击OK4、在AddXMLCatalogElement对话框中,修改Key为(在自动填写的Key值后面添加“/xcom-batch-1.0.xsd”)5、全部点击OK完成。运行环境批处理应用框架运行于遵循Servlet2.4规范的JavaEEWeb容器中。因批处理应用的特殊性(并发会话少,高I/O,高CPU占用,高内存占用),建议使用轻量级的Web容器(例如:Tomcat6.0)。为了提升数据库访问的性能,建议将批处理应用部署在数据库实例所在主机上。2020-1-21版权所有,侵权必究第5页,共14页数据库初始化批处理应用框架依赖xcom-rbac构件提供权限控制,请参照xcom-rbac构件要求初始化数据库。一般情况下,建议批处理应用与基于XPortal的企业应用使用相同的数据库。在此基础上,请使用sql目录下的SQL脚本建立批处理应用框架相关的表结构。.4批处理流程配置批处理应用框架的流程配置参考了SpringBatch的流程配置,完全兼容SpringBatch的配置,并在此基础上添加了一定的扩展(使用了新的XML命名空间)。本章节主要介绍常见流程模式的配置,更多内容请参考spring-batch-docs.pdf流程配置文件流程配置文件用于定义批处理流程(Job)。流程配置文件遵循xcom系列构件的xml配置文件命名规范,文件名格式为components.jobs.[模块名].xml,该文件必须放置于classpath的根路径上。该配置文件格式与SpringBatch的Job配置文件基本相同,主要差异有:2020-1-21版权所有,侵权必究第6页,共14页1、batch的命名空间用代替了、Job和Step的description子元素内容可以通过API获取(SpringBatch中的description的内容无法通过API获取)。顺序顺序执行的流程模式如下图所示:该模式对应的配置代码如下:jobid=jobstepid=stepAparent=s1next=stepB/stepid=stepBparent=s2next=stepC/stepid=stepCparent=s3//job条件分支条件分支流程模式如下图所示:该模式对应的配置代码如下:2020-1-21版权所有,侵权必究第7页,共14页jobid=jobstepid=stepA……nexton=*to=stepB/nexton=FAILEDto=stepC//stepstepid=stepB……next=stepC/stepid=stepC……//jobnext标签的on属性值用于与当前步骤执行完毕后的ExitStatus属性进行匹配,其中:“*”匹配零个或多个任意字符“?”匹配一个任意字符更多内容请参考spring-batch-docs.pdf5.3.2至5.3.4节并行分支并行分支流程配置代码如下所示:splitid=split1next=step4flowstepid=step1……next=step2/stepid=step2……//flowflowstepid=step3……//flow/splitstepid=step4……/step1step2这个分支将与step3同时执行,当两个分支都完成后才会执行step4。2020-1-21版权所有,侵权必究第8页,共14页子流程子流程有三种实现方法:1、简单的声明一个flow,继承自其他flow:jobid=jobflowid=job1.flow1parent=flow1next=step3/stepid=step3parent=s3//jobflowid=flow1stepid=step1parent=s1next=step2/stepid=step2parent=s2//flow2、使用FlowStep,通过flow属性引用子流程:jobid=jobstepid=job1.flow1flow=flow1next=step3/stepid=step3parent=s3//jobflowid=flow1stepid=step1parent=s1next=step2/stepid=step2parent=s2//flow3、使用JobStep,与FlowStep不同,这样会创建独立的流程执行器,是真正意义上的子流程:jobid=jobStepJobrestartable=truestepid=jobStepJob.step1jobref=jobjob-launcher=jobLauncher……//step/job2020-1-21版权所有,侵权必究第9页,共14页jobid=jobrestartable=true……/job.5批处理步骤开发批处理步骤开发就是指Step的配置和实现。SpringBatch已经提供了4种类型的Step:TaskletStep、FlowStep、JobStep和PartitionStep。其中FlowStep和JobStep用于配置子流程,PartitionStep用于配置并行处理,其余情况下我们只需要配置TaskletStep即可。TaskletStep为应用开发提供了Tasklet接口,并提供了几种基本的Tasklet实现,加速个性化开发过程。简单步骤开发简单步骤的开发,建议扩展AbstractSimpleTasklet类,实现publicvoidrun(StepContributionstepContribution,ChunkContextchunkContext)方法完成。请参考测试代码:TestHelloTasklet.java:publicclassTestHelloTaskletextendsAbstractSimpleTasklet{@Overridepublicvoidrun(StepContributionstepContribution,ChunkContextchunkContext){System.out.println(Hello);}}配置代码举例如下:2020-1-21版权所有,侵权必究第10页,共14页stepid=step1next=step2description步骤一:简单Tasklet/descriptiontaskletref=helloTasklet/!--tasklet引用模式--/stepstepid=step2description步骤二/descriptiontaskletbeanxmlns==com.cvicse.crms.batch.test.TestHelloTasklet//tasklet!—内嵌bean模式--/step……beanname=helloTaskletclass=com.cvicse.crms.batch.test.TestHelloTasklet/Chunk步骤开发每个Batch都会包含一个Job。Job就像一个容器,这个容器里装了若干Step,Batch中实际干活的也就是这些Step,至于Step干什么活,无外乎读取数据,处理数据,然后将这些数据存储起来(ItemReader用来读取数据,ItemProcessor用来处理数据,ItemWriter用来写数据)。JobLauncher用来启动Job,JobRepository是上述处理提供的一种持久化机制,它为JobLauncher,Job,和Step实例提供CRUD操作。2020-1-21版权所有,侵权必究第11页,共14页外部控制器调用JobLauncher启动一个Job,Job调用自己的Step去实现对数据的操作,Step处理完成后,再将处理结果一步步返回给上一层,这就是Batch处理实现的一个简单流程。Step执行过程:从DB或是文件中取出数据的时候,read()操作每次只读取一条记录,之后将读取的这条数据传递给processor(item)处理,框架将重复做这两步操作,直到读取记录的件数达到batch配置信息中”commin-interval”设定值的时候,就会调用一次write操作。然后再重复上图的处理,直到处理完所

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功