- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于SPring Batch数据迁移处理系统设计与实现
基于SPring Batch数据迁移处理系统设计与实现
[摘要]本省自动气象观测系统根据观测要素的不同分为单雨量系统、两要素系统和六要素系统。三类观测系统分别接收各自站点采集的报文进行解码入库,同时通过FTP将数据报文发送到综合处理系统再次进行解码入库。这样的处理流程不仅增加网络负担,还进行了重复的解码工作,资源利用率低。为此本文采用基于Spring Batch的框架,定时对三个不同观测系统的后台数据库的实时数据向综合处理系统的数据库进行迁移。该流程采用数据分区技术,多线程并行处理,在减少了对网络带宽的占用量的同时,降低了各个系统CPU使用量,提高了工作效率。
[关键词]Spring Batch 数据迁移 数据分区 多线程
引言
本省的气象自动站综合系统需要对已经进行过解码入库的单雨量、两要素和六要素观测报文进行集中,再次进行解码后插入综合数据库,并以此对外提供服务。这样的处理流程不仅在资源利用、网络带宽的占用都产生了很大的浪费。
通过分别读取单雨量、两要素和六要素的数据库,对已经入库的数据进行准实时的迁移,在降低网络带宽占用的同时,也能降低综合处理系统的资源占用。但是基于大量的数据读写,且重复性高工作,传统的编程方式处理不仅繁琐,且维护性低。已经Spring Batch的出现无疑是解决这种问题的一种有效工具。由于目前已经有比较成熟的开源框架支持批处理的需求,所以本方案拟选用开源框架Spring Batch。这样可以借助开源框架比较成熟的代码,减少研究的难度,加强框架扩展性,减少研发周期,加快实际应用进度,并且保证程序的稳定性。
一、Spring Batch简介
Spring batch是Spring的一个子项目,由Spring Source与Accenture(埃森哲)合作开发的批处理框架。Springhatch对编写批处理程序本身的特性进行了抽象。将批处理程序分为Job和Job Step两个部分,将处理环节定义为数据读、数据处理和数据写三个步骤。提供Job Repository来存储Job执行期间的元数据,可以在处理大量的数据时,提供日志记录/跟踪,事务管理,处理统计,资源管理等特性。此外,还提供了分区技术采用多线程方式并行处理作业。
二、系统总体架构设计
考虑到系统可能出现的单店故障,为减少处理这类故障的开发难度。开发三个独立的程序分别对单雨量、两要素和六要素三个数据库中的数据进行迁移。本文以迁移两要素数据为例进行介绍。
Spring bath的核心思想是将读取到的数据转化为Java对象,然后对对象进行操作。首先需要根据表中的字段建立相应的实体类,然后Spring Batch把从源数据库中读取的每条数据映射为对应的Java对象,由于本文只是对数据进行迁移,不需要对对象进行处理,所以将Java对象的值通过写步骤写入目标数据库。实际应用中只关注两张表中存储的数据:小时数据表(tabHourData)和分钟数据表(tabMinuteData),由于迁移这两张表没有具体的先后顺序,将这两部分工作并行处理。
Spring batch提供了XML方式进行业务流程配置,通过spht元素来提供并行作业流的定义,通过task-execution属性来定义执行的线程池,从而提高Job的执行效率。其中要定义两个不同的作业步(transferHottrTab_step和transferMinuteTab_step),每个作业步下定义了两个具体的子Job分别来完成对两张数据表的数据迁移。子Job中又分别定义了读、写两个过程来完成数据的迁移。其中为了保证执行效率定义了commit-interval,指定了从数据库读入1000条数据后进行一次写操作,这样既减少了10的访问,也提高了写入效率。关键配置如下(以transferHottrTab_Job为例):
数据迁移中读取的数据量较大,为了高时效的完成读取作业,读取数据的任务进行分区,每个分区交给不同的线程处理。该模式的优点在于分区中每一个元素的处理都能像一个普通Spring Batch任务的单步一样运行。具体关系图如3-1,将需要读取的目标数据分为了3个分区,每一个分区都有一个执行上下文Execution Context,StepExecutionSplitter根据不同的上下文生成作业步执行器,然后交给PartitionHandler来处理。应为Spring Batch默认实现了StepExecutionSplitter以及PartitionHandler。开发过程中原则上只需要实现自己分区逻辑partitioner即可。
小时表和分钟表都含有对数据观测时间的字段,因此对该字段进行分区,可以实现分区策略的共享。具体配置如
您可能关注的文档
- 基于Smart Growth土地开发利用政策研究.doc
- 基于SmarTele语音流程脚本语言构建IVR系统研究.doc
- 基于SmartFUSion光伏逆变控制和功率管理方案.doc
- 基于Smartphone服务器辅助RSA密钥生成.doc
- 基于SMART保密检查工作质量改进.doc
- 基于SMART原则英语专业写作教学实效性探究.doc
- 基于SMART原则LTE技术人才培养项目.doc
- 基于SMBus总线智能控温系统.doc
- 基于SMB异构网络资源共享.doc
- 基于SMC无刷直流电机矢量控制.doc
- 基于Spring AOP权限控制应用研究.doc
- 基于Spring MVCMyBatis加油站安全贴业务管理系统设计与实现.doc
- 基于Spring MVCJDBCTemplateWeb系统研究与应用.doc
- 基于Spring MVC和Hibernate集成Portlet开发构架研究.doc
- 基于Spring MVC和Mybatis动态表单设计.doc
- 基于Spring MVC框架电商平台研究与设计.doc
- 基于SpringBoot微服务架构城市一卡通手机充值支撑系统研究.doc
- 基于SpringExtjs高校住宿管理系统设计与实现.doc
- 基于Spring.NET电子商城系统轻量级框架研究.doc
- 基于SpringMVC架构旅游攻略网站前后台设计与实现.doc
文档评论(0)