一种面向多数据源的分布式事务处理方法及系统与流程

文档序号:12887012阅读:257来源:国知局
一种面向多数据源的分布式事务处理方法及系统与流程

本发明涉及数据处理技术领域,更具体的,涉及一种面向多数据源的分布式事务处理方法及系统。



背景技术:

随着电网业务的不断增长,数据量不断增大,比如电表数据,电网目前接入上亿电表,每个电表按照15分钟一个点采集数据,数据量的激增对数据库的要求越来越高。为了提高数据库中数据访问的并发性能,目前的一般做法是将数据源进行拆分,从单一数据源拆分为多数据源。根据不同的业务特性,我们采用分库分表和读写分离两种数据库拆分策略。

分库分表和读写分离实现了多数据源的数据存储和访问,但是,随之而来是对事务处理的要求,如何满足多数据源条件下在分库存储和读写分离两种策略下的事务处理的acid要求,即,原子性(atomicity),一致性(consistency),隔离性(isolation)和持久性(durability),并且提供给不同的开发团队统一的分布式事务处理的开发能力,成为了较为突出的问题。

x/opendtp是一种分布式事务处理参考模型,由x/open公司制定了分布式事务处理参考模型dtp和一系列api规范作为分布式事务处理系统的标准。该模型有三个基本的组成部分:事务管理器(transaciotnmanage)、资源管理器(resource)和应用程序(applicationprogram)。事务管理器监视所在的分布式事务域内所有应用程序与资源管理器的行为,控制事务提交、回滚和恢复等过程,保证事务正常处理。

基于x/opendtp虽然可实现分布式事务处理,但是仅能解决在单一数据源拆分后的多数据源内部实现分布式事务处理,无法解决当不同的多数据源分别拆分为多数据源时的分布式事务处理问题。



技术实现要素:

有鉴于此,本发明提供了一种面向多数据源的分布式事务处理方法及系统,在事务开发层统一对分布式事务的进行开发和定义,满足分库分表和读写分离两种多数据源情况下的分布式事务处理。

为实现上述发明目的,本发明提供的具体技术方案如下:

一种面向多数据源的分布式事务处理方法,所述方法包括:

事务定义模块根据sg-uap扩展模块的规范,对面向多数据源的多个分布式事务进行声明、定义、引入和控制,得到每个所述分布式事务的配置文件;

事务协调器对每个所述分布式事务的配置文件进行解析,得到每个所述分布式事务对应的事务管理器和资源管理器,并将每个所述分布式事务分发到相应的事务管理器;

所述事务管理器将接收到的多个所述分布式事务分别发送到相应的资源管理器;

所述资源管理器根据接收到的所述分布式事务的配置文件对所述分布式事务进行相应的处理。

优选的,所述事务定义模块根据sg-uap扩展模块的规范,对面向多数据源的多个分布式事务进行声明、定义、引入和控制,得到每个所述分布式事务的配置文件,包括:

在uap项目中,对多个数据源的预设参数进行配置,并对外发布分别与各个所述数据源相对应的各个数据源服务,所述uap项目包括多个业务模块;

在扩展模块项目中,引入各个所述数据源服务,并配置每个所述数据源的dao对象和分布式事务处理对象;

在扩展模块项目中,对外进行dao声明和分布式事务声明,发布每个所述数据源的dao服务和分布式事务服务;

在每个所述业务模块中,引入所述扩展模块项目中发布的dao服务和分布式事务服务,并编辑每个分布式事务的配置文件;

配置事务控制文件,在所述事务控制文件中定义可调用分布式事务服务的业务模块。

优选的,每个数据源唯一对应一个事务管理器。

优选的,所述资源管理器根据接收到的所述分布式事务的配置文件对所述分布式事务进行相应的处理,包括:

实时监测接收到的各个分布式事务的执行状态;

当所述分布式事务执行失败时,将所述分布式事务涉及的资源恢复到执行所述分布式事务之前的状态;

当所述分布式事务执行成功时,对所述分布式事务进行提交。

一种面向多数据源的分布式事务处理系统,所述系统包括事务定义模块、事务协调器、多个事务管理器和多个资源管理器;

所述事务定义模块,用于根据sg-uap扩展模块的规范,对面向多数据源的多个分布式事务进行声明、定义、引入和控制,得到每个所述分布式事务的配置文件;

所述事务协调器,用于对每个所述分布式事务的配置文件进行解析,得到每个所述分布式事务对应的事务管理器和资源管理器,并将每个所述分布式事务分发到相应的所述事务管理器;

所述事务管理器,用于将接收到的多个所述分布式事务分别发送到相应的所述资源管理器;

所述资源管理器,用于根据接收到的所述分布式事务的配置文件对所述分布式事务进行相应的处理。

优选的,所述事务定义模块包括:

第一配置子模块,用于在uap项目中,对多个数据源的预设参数进行配置,并对外发布分别与各个所述数据源相对应的各个数据源服务,所述uap项目包括多个业务模块;

第二配置子模块,用于在扩展模块项目中,引入各个所述数据源服务,并配置每个所述数据源的dao对象和分布式事务处理对象;

声明子模块,用于在扩展模块项目中,对外进行dao声明和分布式事务声明,发布每个所述数据源的dao服务和分布式事务服务;

引入子模块,用于在每个所述业务模块中,引入所述扩展模块项目中发布的dao服务和分布式事务服务,并编辑每个分布式事务的配置文件;

第三配置子模块,用于配置事务控制文件,在所述事务控制文件中定义可调用分布式事务服务的业务模块。

优选的,每个数据源唯一对应一个事务管理器。

优选的,所述资源管理器包括:

监测子模块,用于实时监测接收到的各个分布式事务的执行状态;

恢复子模块,用于当所述分布式事务执行失败时,将所述分布式事务涉及的资源恢复到执行所述分布式事务之前的状态;

提交子模块,用于当所述分布式事务执行成功时,对所述分布式事务进行提交。

相对于现有技术,本发明的有益效果如下:

本发明提供的面向多数据源的分布式事务处理方法及系统,在事务定义模块基于sg-uap扩展模块的规范,且符合osgi框架,实现对不同数据源的分布式事务的定义,供事务开发人员调用和配置,从而实现了分布式事务开发的统一、可配置;事务协调器通过对事务定义模块定义的分布式事务的配置文件进行解析,实现对整个业务系统内所有分布式事务的统一协调,将指定数据源的事务处理任务进行统一协调,并分发到不同的事务管理器中;所述事务管理器将接收到的多个所述分布式事务分别发送到相应的资源管理器;所述资源管理器根据接收到的所述分布式事务的配置文件对所述分布式事务进行相应的处理。本发明提供统一的分布式事务处理功能,在事务开发层统一分布式事务的开发,提高了开发人员的开发效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例公开的一种面向多数据源的分布式事务处理方法流程图;

图2为本发明实施例公开的一种面向多数据的分布式事务处理方法子流程图;

图3为本发明实施例公开的一种面向多数据的分布式事务处理系统结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1,本实施例公开了一种面向多数据源的分布式事务处理方法,具体包括以下步骤:

s101:事务定义模块根据sg-uap扩展模块的规范,对面向多数据源的多个分布式事务进行声明、定义、引入和控制,得到每个所述分布式事务的配置文件;

sg-uap(应用系统统一开发平台,unifiedapplicatoinplatform)为国家电网统一应用开发平台,所有业务系统的开发基于该平台。该平台的数据持久层负责对数据库的操作和事务处理。本发明的结果最终集成到sg-uap中,供国网公司各业务系统的开发团队使用,实现多数据源开发技术和接口的统一。该平台的微内核部分基于osgi框架,实现了模块化的开发。

osgi(openservicegatewayinitiative)框架给出了一套java模块化规范,这套规范给出了osgi框架的定义,而具体的osgi平台,如felix和equinox则分别是apache和eclipse开源社区给出的标准规范的实现。

为了提高开发人员的开发效率,本实施例中事务定义模块遵循sg-uap扩展模块的规范,且符合osgi框架,实现对不同数据源的分布式事务的声明、定义、引入和控制,得到每个所述分布式事务的配置文件,供事务开发人员调用和配置,从而实现了分布式事务开发的统一、可配置。

具体的,请参阅图2,s101的执行过程如下:

s201:在uap项目中,对多个数据源的预设参数进行配置,并对外发布分别与各个所述数据源相对应的各个数据源服务,所述uap项目包括多个业务模块;

在uap项目中,配置多数据源,并对外发布数据源服务(如:datasourceservice)。

数据源的预设参数表征对应数据源的各项参数,包括对应的事务管理器等。

s202:在扩展模块项目中,引入各个所述数据源服务,并配置每个所述数据源的dao对象和分布式事务处理对象;

例如:引入数据源服务datasourceservice1

s203:在扩展模块项目中,对外进行dao声明和分布式事务声明,发布每个所述数据源的dao服务和分布式事务服务;

发布相关的dao服务(如:myhibernatedaoservice)和分布式事务服务(如:jtatransactionmanagerservice)。

以下为事务声明例子:

s204:在每个所述业务模块中,引入所述扩展模块项目中发布的dao服务和分布式事务服务,并编辑每个分布式事务的配置文件;

引入dao服务(如:myhibernatedaoservice)和分布式事务服务(如:jtatransactionmanagerservice),增加entity配置,编辑分布式事务的配置文件(moduleentitypersistence.xml)。每个分布式事务的配置文件中包括对应的事务管理器和资源管理器。

s205:配置事务控制文件,在所述事务控制文件中定义可调用分布式事务服务的业务模块。

事务控制文件中,通过配置的方式,指定了当前业务模块项目中,哪些可调用分布式事务服务。根据事务控制文件,对于不能调用分布式事务服务的业务模块项目,可以对分布式事务进行拦截。

s102:事务协调器对每个所述分布式事务的配置文件进行解析,得到每个所述分布式事务对应的事务管理器和资源管理器,并将每个所述分布式事务分发到相应的事务管理器;

在实际应用中,根据业务的不同,对分库存储拆分的策略也不同,事务协调器对每个所述分布式事务的配置文件进行解析,得到事务开发人员对不同的数据源的事务的定义,来调用相应的事务管理器对分布式事务进行分发。

s103:所述事务管理器将接收到的多个所述分布式事务分别发送到相应的资源管理器;

需要说明的是,每个数据源唯一对应一个事务管理器。

无论是分库存储,还是读写分离的方式,对于某个待拆分的数据源而言,其拆分后的多数据源就构成了一个分布式多数据源环境,在该多数据源内部,提供全局唯一的事务管理器,保证该数据源拆分后,事务的acid,即,原子性(atomicity),一致性(consistency),隔离性(isolation)和持久性(durability)特性。

当事务管理器接收到多个分布式事务时,事务管理器为每个分布式事务分配一个全局的唯一标识。事务管理器监视管理范围内所有的应用程序与资源管理器的行为,控制分布式事务提交、回滚和恢复等过程,保证分布式事务正常进行。

本实施例主要针对分库分表和读写分离两种多数据源的方式,保持拆分后的多个数据源之间的同步,实现事务的提交、回滚操作。

s104:所述资源管理器根据接收到的所述分布式事务的配置文件对所述分布式事务进行相应的处理。

具体的,所述资源管理器实时监测接收到的各个分布式事务的执行状态;当所述分布式事务执行失败时,将所述分布式事务涉及的资源恢复到执行所述分布式事务之前的状态;当所述分布式事务执行成功时,对所述分布式事务进行提交。

本实施例提供的面向多数据源的分布式事务处理方法,在事务定义模块基于sg-uap扩展模块的规范,且符合osgi框架,实现对不同数据源的分布式事务的定义,供事务开发人员调用和配置,从而实现了分布式事务开发的统一、可配置;事务协调器通过对事务定义模块定义的分布式事务的配置文件进行解析,实现对整个业务系统内所有分布式事务的统一协调,将指定数据源的事务处理任务进行统一协调,并分发到不同的事务管理器中;所述事务管理器将接收到的多个所述分布式事务分别发送到相应的资源管理器;所述资源管理器根据接收到的所述分布式事务的配置文件对所述分布式事务进行相应的处理。本实施例提供统一的分布式事务处理功能,在事务开发层统一分布式事务的开发,提高了开发人员的开发效率。

基于上述实施例公开的面向多数据源的分布式事务处理方法,请参阅图3,本实施例对应公开了一种面向对数据源的分布式事务处理系统,包括事务定义模块101、事务协调器102、多个事务管理器103和多个资源管理器104;

所述事务定义模块101,用于根据sg-uap扩展模块的规范,对面向多数据源的多个分布式事务进行声明、定义、引入和控制,得到每个所述分布式事务的配置文件;

具体的,所述事务定义模块101包括:

第一配置子模块,用于在uap项目中,对多个数据源的预设参数进行配置,并对外发布分别与各个所述数据源相对应的各个数据源服务,所述uap项目包括多个业务模块;

第二配置子模块,用于在扩展模块项目中,引入各个所述数据源服务,并配置每个所述数据源的dao对象和分布式事务处理对象;

声明子模块,用于在扩展模块项目中,对外进行dao声明和分布式事务声明,发布每个所述数据源的dao服务和分布式事务服务;

引入子模块,用于在每个所述业务模块中,引入所述扩展模块项目中发布的dao服务和分布式事务服务,并编辑每个分布式事务的配置文件;

第三配置子模块,用于配置事务控制文件,在所述事务控制文件中定义可调用分布式事务服务的业务模块。

所述事务协调器102,用于对每个所述分布式事务的配置文件进行解析,得到每个所述分布式事务对应的事务管理器和资源管理器,并将每个所述分布式事务分发到相应的所述事务管理器;

所述事务管理器103,用于将接收到的多个所述分布式事务分别发送到相应的所述资源管理器;

需要说明的是,每个数据源唯一对应一个事务管理器。

所述资源管理器104,用于根据接收到的所述分布式事务的配置文件对所述分布式事务进行相应的处理。

具体的,所述资源管理器104包括:

监测子模块,用于实时监测接收到的各个分布式事务的执行状态;

恢复子模块,用于当所述分布式事务执行失败时,将所述分布式事务涉及的资源恢复到执行所述分布式事务之前的状态;

提交子模块,用于当所述分布式事务执行成功时,对所述分布式事务进行提交。

本实施例提供的面向多数据源的分布式事务处理系统,在事务定义模块基于sg-uap扩展模块的规范,且符合osgi框架,实现对不同数据源的分布式事务的定义,供事务开发人员调用和配置,从而实现了分布式事务开发的统一、可配置;事务协调器通过对事务定义模块定义的分布式事务的配置文件进行解析,实现对整个业务系统内所有分布式事务的统一协调,将指定数据源的事务处理任务进行统一协调,并分发到不同的事务管理器中;所述事务管理器将接收到的多个所述分布式事务分别发送到相应的资源管理器;所述资源管理器根据接收到的所述分布式事务的配置文件对所述分布式事务进行相应的处理。本实施例提供统一的分布式事务处理功能,在事务开发层统一分布式事务的开发,提高了开发人员的开发效率。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1