一种基于多线程的长事务并行执行方法技术

技术编号:8655780 阅读:311 留言:0更新日期:2013-05-01 23:25
长事务是指包含多个原子事务且执行时间较长的事务,串行地执行这些原子事务不仅将使长事务执行时间较长,而且还占用较多的系统资源,导致系统运行效率降低。本发明专利技术公开了一种基于多线程的长事务并行执行方法,包括以下步骤:(1)将长事务形式化描述为一个扩展的有向图;(2)将LT分割为若干个可以并行执行的子事务LT,给出了其分割算法;(3)?基于POSIX线程库(或者Windows线程API)派生若干个子线程以并行嵌套的模式执行长事务。(4)并行化后的代码需要运行在多核处理器(或多CPU处理器)上。该发明专利技术可以显著缩短长事务的执行时间,提高长事务执行效率,可应用于面向服务架构SOA、服务组合、事务处理等领域。

【技术实现步骤摘要】

本专利技术专利涉及长事务、图论、多线程技术、服务组合等
,尤其是实现了。
技术介绍
随着Internet的广泛应用和网络技术的迅速发展,以Web服务为基础的面向服务架构(Service-Oriented Architecture, S0A)作为新型的分布式计算模式已成为目前Internet环境下主流的开发模式,通过动态地组合Web服务构建目标系统是软件开发的主要途径。在服务执行过程中,事务机制是保证数据一致性和可靠性的关键技术,由于服务组合的复杂性、异构性和长期性使得SOA模式下事务表现出不同于传统事务的特点。传统事务也称为平坦事务,主要适用于处理时间较短的数据处理和较为简单的应用,事务应用控制只有一层,事务的ACID特性在这种情况下能够得到保障。而在基于互联网络的分布式环境下,由于服务组合产生的事务变得越来越复杂,其主要特点包括(I)执行时间长。传统事务的处理时间只有几毫秒,而基于服务组合产生的事务执行时间相对较长,这是因为服务组合涉及到很多步骤,具有较复杂的业务逻辑,提交整个事务需要花费较长的时间。(2)拥有多个原子事务。一般地一个长事务包含多个原子事务,原子事务之间具有一定的依赖关系,每个原子事务都有自己的ACID特性,当所有的原子事务都提交后整个长事务才提交。(3)非严格的ACID特性。由于传统事务的执行时间较短,保障事务的ACID特性不会造成事务回滚时的大量资源浪费,而Web服务环境下,长事务涉及到许多原子事务,如果当原子事务执行失败而回滚整个长事务将导致系统效率降低,因此传统的事务ACID特性对长事务显得过于严格而代价过高。一般地,长事务包括多个原子事务,只有当所有的原子事务执行完毕,整个长事务才算提交完成,其执行时间较长,占用的系统资源(如CPU、内存、数据字典、日志文件等)较多,这在基于锁的事务处理中尤其明显,如果长时间占用这些资源将导致系统运行效率降低,甚至数据库系统崩溃。当前学术界关于长事务的研究主要集中于长事务的失效回复方法,当某一原子事务提交失败时,可以不用回必回滚整个长事务,即不必完全遵循事务的ACID特性。针对该问题,提出了多个模型,如较早的Sagas模型、适合于多数据库的Flexible模型、以及有严格提交先后关系的嵌套事务模型等,这些模型通过提出不同的补偿机制,确保原子事务在提交失败时,进行适当的处理,增强失效处理和失效回复的能力。另一方面,长事务的长时间执行会造成事务的并发度降低,影响事务的执行效率。针对该问题,本专利技术专利实现了,可以显著缩短长事务的执行时间,提闻长事务执行效率和资源运行效率。
技术实现思路
为了缩短长事务的执行时间,提高长事务执行效率和资源运行效率,本专利技术专利通过分析长事务中原子事务的依赖关系,建立长事务执行模型,将长事务中包含的原子事务分割为多个可以并行执行的子事务,每个子事务由一个独立的线程执行,利用线程级并行技术加速执行长事务。,包括以下步骤:(I)、将长事务描述为一个扩展的有向图。长事务可以形式化表示为一个扩展的有向图LT=(T,E,R),其中T =U^t2, - ,tj是原子事务集合,且每个原子事务且都具有ACID特性!E=Ie1, e2,…em}是原子事务间依赖关系集合,如— tk表示原子事务tk的开始由h的执行结果决定,若\提交时tk开始执行,则称为提交依赖,若\回滚时tk开始执行,则称为回滚依赖;R= Ir1^2,…,rn}是逻辑关系的集合,如&表示一个以\为终点的事务之间的“与”、“或”逻辑表关系。(2)、将长事务LT分割为若干个可以并行执行的子事务LT’。LT’是长事务的一个子集,可以包含一个或多个原子事务,即子事务LT’ =(T’,E’,R’),其中T’ CT, Ε’ CE,R’ CRo通过将长事务划分为若干个子事务,当子事务之间不存在依赖关系时即可并行执行。其分割过程包括以下步骤:(2.1)、分析长事务中所包含的原子事务、原子事务之间的依赖关系、原子事务直接的逻辑关系实现,建立长事务扩展有向图(EDG )。(2.2)、根据长事务扩展有向图(EDG),合并有环子图,生成扩展有向无环图(EDAG)0(2.3)、循环查找EDAG中的顺序事务。若当前事务只有唯一的孩子事务并且该孩子事务的父事务也是唯一的,则将它们是顺序事务,合并它们。(2.4)、如果EDAG中仅包含一个子事务,则说明该长事务无法并行执行,否则输出并行化结果,该结果是包含多个 可并行执行的子事务。(3)、基于POSIX线程库(或者Windows线程API)派生若干个子线程并行执行长事务。长事务被划分为若干个子事务之后,其执行过程如下:(3.1)、在长事务开始执行时,只生成一个线程(称为主线程),由它负责执行。(3.2)、如果遇到可以并行执行的子事务时,则根据子事务的数量派生(Fork)出若干个子线程(称为辅助线程)并行执行。(3.3)、在并行子事务执行过程中,如果又遇到可以并行执行的子事务,则继续派生新的辅助线程来执行新的并行子事务,此即为并行嵌套,可派生的辅助线程数目依赖于多核处理器的核数。(3.4)、当辅助线程执行完毕后,则与主线程会和(Join),由主线程单独执行长事务,如果又遇到可并行的子事务,则转到(3.2),否则直到长事务执行完毕。(4)、长事务并行执行的硬件环境是多核处理器(或多CPU处理器),这些平台为TLP技术提供了平台支撑。本专利技术的效果本专利技术专利的效果是可以将串行执行的长事务并行化为多个可以同时执行的子事务,每个子事务由一个线程执行,通过多线程并行技术加速长事务的执行,显著缩短长事务的执行时间。附图说明图1是一个长事务的扩展有向图。图2是长事务的并行执行模式。具体实施例方式参照图1和图2,进一步说明本专利技术。,包括以下步骤:(I)、将长事务描述为一个扩展的有向图。长事务可以形式化表示为一个扩展的有向图LT=(T,E,R),其中T =U^t2, - ,tj是原子事务集合,且每个原子事务且都具有ACID特性!E=Ie1, e2,…em}是原子事务间依赖关系集合,如— tk表示原子事务tk的开始由h的执行结果决定,若\提交时tk开始执行,则称为提交依赖,若\回滚时tk开始执行,则称为回滚依赖;R= Ir1^2,…,rn}是逻辑关系的集合,如&表示一个以\为终点的事务之间的“与”、“或”逻辑表关系。图1是一个包含有11个原子事务的长事务扩展有向图,边L— t5表示t5执行依赖于h的提交,t5 — t7表示t7执行依赖于t5的回滚,!T1表示t1(l执行由t6、t7、t4、t9的逻辑与决定。(2)、将长事务LT分割为若干个可以并行执行的子事务LT’。LT’是长事务的一个子集,可以包含一个或多个原子事务,即子事务LT’ =(T,,E,,R,),其中T,ST, Ε,SE,R’ CRo通过将长事务划分为若干个子事务,当子事务之间不存在依赖关系时即可并行执行。在图1中构成一个子事务,构成一个子事务,构成一个子事务,这三个子事务可以并行执行。其分割的具体步骤如下:(2.1)、分析长事务中所包含的原子事务、原子事务之间的依赖关系、原子事务直接的逻辑关系实现,建立长事务扩展有向图(EDG )。(2.2)、根据长事务扩展有向图(EDG),合并有环子本文档来自技高网
...

【技术保护点】
一种基于多线程的长事务并行执行方法,其特征在于:并行执行长事务包括以下步骤:(1)、将长事务描述为一个扩展的有向图。长事务可以形式化表示为一个扩展的有向图LT=(T,E,R),其中T?={t1,t2,…,tn}是原子事务集合,且每个原子事务且都具有ACID特性;E={e1,e2,…em}是原子事务间依赖关系集合,如ei=ti→tk表示原子事务tk的开始由ti的执行结果决定,若ti提交时tk开始执行,则称为提交依赖,若ti回滚时tk开始执行,则称为回滚依赖;R={r1,r2,…,rn}是逻辑关系的集合,如ri表示一个以ti为终点的事务之间的“与”、“或”逻辑表关系。(2)、将长事务LT分割为若干个可以并行执行的子事务LT’。LT’是长事务的一个子集,可以包含一个或多个原子事务,即子事务LT’=(T’,E’,R’),其中T’T,E’E,R’R。通过将长事务划分为若干个子事务,当子事务之间不存在依赖关系时即可并行执行。其分割过程包括以下步骤:(2.1)、分析长事务中所包含的原子事务、原子事务之间的依赖关系、原子事务直接的逻辑关系实现,建立长事务扩展有向图(EDG)。(2.2)、根据长事务扩展有向图(EDG),合并有环子图,生成扩展有向无环图(EDAG)。(2.3)、循环查找EDAG中的顺序事务。若当前事务只有唯一的孩子事务并且该孩子事务的父事务也是唯一的,则将它们是顺序事务,合并它们。(2.4)、如果EDAG中仅包含一个子事务,则说明该长事务无法并行执行,否则输出并行结果,该结果是包含多个可并行执行的子事务。(3)、基于POSIX线程库(OpenM语言或者Windows线程API)派生若干个子线程并行执行长事务。长事务被划分为若干个子事务之后,其执行过程如下:(3.1)、在长事务开始执行时,只生成一个线程(称为主线程),由它负责执行。(3.2)如果遇到可以并行执行的子事务时,则根据子事务的数量派生(Fork)出若干个子线程(称为辅助线程)并行执行。(3.3)、在并行子事务执行过程中,如果又遇到可以并行执行的子事务,则继续派生新的辅助线程来执行新的并行子事务,此即为并行嵌套,可派生的辅助线程数目依赖于多核处理器的核数。(3.4)、当辅助线程执行完毕后,则与主线程会和(Join),由主线程单独执行长事务,如果又遇到可并行的子事务,则转到(3.2),否则直到长事务执行完毕。(4)、长事务并行执行的硬件环境是多核处理器(或多CPU处理器),这些平台为TLP技术提供了平台支撑。FDA0000266088341.jpg,FDA0000266088342.jpg,FDA0000266088343.jpg...

【技术特征摘要】
1.一种基于多线程的长事务并行执行方法,其特征在于:并行执行长事务包括以下步骤: (1)、将长事务描述为一个扩展的有向图。长事务可以形式化表示为一个扩展的有向图LT= (T, E,R),其中T ={tl,t2,…,tn}是原子事务集合,且每个原子事务且都具有ACID特性;E={el,e2,…em}是原子事务间依赖关系集合,如ei=ti — tk表示原子事务tk的开始由ti的执行结果决定,若ti提交时tk开始执行,则称为提交依赖,若ti回滚时tk开始执行,则称为回滚依赖;R= {rl,r2,…,rn}是逻辑关系的集合,如ri表示一个以ti为终点的事务之间的“与”、“或”逻辑表关系。(2)、将长事务LT分割为若干个可以并行执行的子事务LT'LT’是长事务的一个子集,可以包含一个或多个原子事务,即子事务LT’=(T’,E’,R’),其中T’ST,E’ SE, R,SR。通过将长事务划分为若干个子事务,当子事务之间不存在依赖关系时即可并行执行。其分割过程包括以下步骤: (2.1)、分析长事务中所包含的原子事务、原子事务之间的依赖关系、原子事务直接的逻辑关系实现,建立长事务扩展有向图(EDG)。(2.2)、根据长事务扩展有向图(EDG),合并有环子图,生成扩...

【专利技术属性】
技术研发人员:张元鸣肖刚高飞陆佳炜徐俊吴利群
申请(专利权)人:浙江工业大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1