亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于多線程的長事務(wù)并行執(zhí)行方法

文檔序號(hào):6385705閱讀:267來源:國知局
專利名稱:一種基于多線程的長事務(wù)并行執(zhí)行方法
技術(shù)領(lǐng)域
本發(fā)明專利涉及長事務(wù)、圖論、多線程技術(shù)、服務(wù)組合等技術(shù)領(lǐng)域,尤其是實(shí)現(xiàn)了一種基于多線程的長事務(wù)并行執(zhí)行方法。
背景技術(shù)
隨著Internet的廣泛應(yīng)用和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,以Web服務(wù)為基礎(chǔ)的面向服務(wù)架構(gòu)(Service-Oriented Architecture, S0A)作為新型的分布式計(jì)算模式已成為目前Internet環(huán)境下主流的開發(fā)模式,通過動(dòng)態(tài)地組合Web服務(wù)構(gòu)建目標(biāo)系統(tǒng)是軟件開發(fā)的主要途徑。在服務(wù)執(zhí)行過程中,事務(wù)機(jī)制是保證數(shù)據(jù)一致性和可靠性的關(guān)鍵技術(shù),由于服務(wù)組合的復(fù)雜性、異構(gòu)性和長期性使得SOA模式下事務(wù)表現(xiàn)出不同于傳統(tǒng)事務(wù)的特點(diǎn)。傳統(tǒng)事務(wù)也稱為平坦事務(wù),主要適用于處理時(shí)間較短的數(shù)據(jù)處理和較為簡單的應(yīng)用,事務(wù)應(yīng)用控制只有一層,事務(wù)的ACID特性在這種情況下能夠得到保障。而在基于互聯(lián)網(wǎng)絡(luò)的分布式環(huán)境下,由于服務(wù)組合產(chǎn)生的事務(wù)變得越來越復(fù)雜,其主要特點(diǎn)包括(I)執(zhí)行時(shí)間長。傳統(tǒng)事務(wù)的處理時(shí)間只有幾毫秒,而基于服務(wù)組合產(chǎn)生的事務(wù)執(zhí)行時(shí)間相對(duì)較長,這是因?yàn)榉?wù)組合涉及到很多步驟,具有較復(fù)雜的業(yè)務(wù)邏輯,提交整個(gè)事務(wù)需要花費(fèi)較長的時(shí)間。(2)擁有多個(gè)原子事務(wù)。一般地一個(gè)長事務(wù)包含多個(gè)原子事務(wù),原子事務(wù)之間具有一定的依賴關(guān)系,每個(gè)原子事務(wù)都有自己的ACID特性,當(dāng)所有的原子事務(wù)都提交后整個(gè)長事務(wù)才提交。(3)非嚴(yán)格的ACID特性。由于傳統(tǒng)事務(wù)的執(zhí)行時(shí)間較短,保障事務(wù)的ACID特性不會(huì)造成事務(wù)回滾時(shí)的大量資源浪費(fèi),而Web服務(wù)環(huán)境下,長事務(wù)涉及到許多原子事務(wù),如果當(dāng)原子事務(wù)執(zhí)行失敗而回滾整個(gè)長事務(wù)將導(dǎo)致系統(tǒng)效率降低,因此傳統(tǒng)的事務(wù)ACID特性對(duì)長事務(wù)顯得過于嚴(yán)格而代價(jià)過高。一般地,長事務(wù)包括多個(gè)原子事務(wù),只有當(dāng)所有的原子事務(wù)執(zhí)行完畢,整個(gè)長事務(wù)才算提交完成,其執(zhí)行時(shí)間較長,占用的系統(tǒng)資源(如CPU、內(nèi)存、數(shù)據(jù)字典、日志文件等)較多,這在基于鎖的事務(wù)處理中尤其明顯,如果長時(shí)間占用這些資源將導(dǎo)致系統(tǒng)運(yùn)行效率降低,甚至數(shù)據(jù)庫系統(tǒng)崩潰。當(dāng)前學(xué)術(shù)界關(guān)于長事務(wù)的研究主要集中于長事務(wù)的失效回復(fù)方法,當(dāng)某一原子事務(wù)提交失敗時(shí),可以不用回必回滾整個(gè)長事務(wù),即不必完全遵循事務(wù)的ACID特性。針對(duì)該問題,提出了多個(gè)模型,如較早的Sagas模型、適合于多數(shù)據(jù)庫的Flexible模型、以及有嚴(yán)格提交先后關(guān)系的嵌套事務(wù)模型等,這些模型通過提出不同的補(bǔ)償機(jī)制,確保原子事務(wù)在提交失敗時(shí),進(jìn)行適當(dāng)?shù)奶幚?,增?qiáng)失效處理和失效回復(fù)的能力。另一方面,長事務(wù)的長時(shí)間執(zhí)行會(huì)造成事務(wù)的并發(fā)度降低,影響事務(wù)的執(zhí)行效率。針對(duì)該問題,本發(fā)明專利實(shí)現(xiàn)了一種基于多線程的長事務(wù)并行執(zhí)行方法,可以顯著縮短長事務(wù)的執(zhí)行時(shí)間,提聞長事務(wù)執(zhí)行效率和資源運(yùn)行效率。

發(fā)明內(nèi)容
為了縮短長事務(wù)的執(zhí)行時(shí)間,提高長事務(wù)執(zhí)行效率和資源運(yùn)行效率,本發(fā)明專利通過分析長事務(wù)中原子事務(wù)的依賴關(guān)系,建立長事務(wù)執(zhí)行模型,將長事務(wù)中包含的原子事務(wù)分割為多個(gè)可以并行執(zhí)行的子事務(wù),每個(gè)子事務(wù)由一個(gè)獨(dú)立的線程執(zhí)行,利用線程級(jí)并行技術(shù)加速執(zhí)行長事務(wù)。一種基于多線程的長事務(wù)并行執(zhí)行方法,包括以下步驟:(I)、將長事務(wù)描述為一個(gè)擴(kuò)展的有向圖。長事務(wù)可以形式化表示為一個(gè)擴(kuò)展的有向圖LT=(T,E,R),其中T =U^t2, - ,tj是原子事務(wù)集合,且每個(gè)原子事務(wù)且都具有ACID特性!E=Ie1, e2,…em}是原子事務(wù)間依賴關(guān)系集合,如— tk表示原子事務(wù)tk的開始由h的執(zhí)行結(jié)果決定,若\提交時(shí)tk開始執(zhí)行,則稱為提交依賴,若\回滾時(shí)tk開始執(zhí)行,則稱為回滾依賴;R= Ir1^2,…,rn}是邏輯關(guān)系的集合,如&表示一個(gè)以\為終點(diǎn)的事務(wù)之間的“與”、“或”邏輯表關(guān)系。(2)、將長事務(wù)LT分割為若干個(gè)可以并行執(zhí)行的子事務(wù)LT’。LT’是長事務(wù)的一個(gè)子集,可以包含一個(gè)或多個(gè)原子事務(wù),即子事務(wù)LT’ =(T’,E’,R’),其中T’ CT, Ε’ CE,R’ CRo通過將長事務(wù)劃分為若干個(gè)子事務(wù),當(dāng)子事務(wù)之間不存在依賴關(guān)系時(shí)即可并行執(zhí)行。其分割過程包括以下步驟:(2.1)、分析長事務(wù)中所包含的原子事務(wù)、原子事務(wù)之間的依賴關(guān)系、原子事務(wù)直接的邏輯關(guān)系實(shí)現(xiàn),建立長事務(wù)擴(kuò)展有向圖(EDG )。(2.2)、根據(jù)長事務(wù)擴(kuò)展有向圖(EDG),合并有環(huán)子圖,生成擴(kuò)展有向無環(huán)圖(EDAG)0(2.3)、循環(huán)查找EDAG中的順序事務(wù)。若當(dāng)前事務(wù)只有唯一的孩子事務(wù)并且該孩子事務(wù)的父事務(wù)也是唯一的,則將它們是順序事務(wù),合并它們。(2.4)、如果EDAG中僅包含一個(gè)子事務(wù),則說明該長事務(wù)無法并行執(zhí)行,否則輸出并行化結(jié)果,該結(jié)果是包含多個(gè) 可并行執(zhí)行的子事務(wù)。(3)、基于POSIX線程庫(或者Windows線程API)派生若干個(gè)子線程并行執(zhí)行長事務(wù)。長事務(wù)被劃分為若干個(gè)子事務(wù)之后,其執(zhí)行過程如下:(3.1)、在長事務(wù)開始執(zhí)行時(shí),只生成一個(gè)線程(稱為主線程),由它負(fù)責(zé)執(zhí)行。(3.2)、如果遇到可以并行執(zhí)行的子事務(wù)時(shí),則根據(jù)子事務(wù)的數(shù)量派生(Fork)出若干個(gè)子線程(稱為輔助線程)并行執(zhí)行。(3.3)、在并行子事務(wù)執(zhí)行過程中,如果又遇到可以并行執(zhí)行的子事務(wù),則繼續(xù)派生新的輔助線程來執(zhí)行新的并行子事務(wù),此即為并行嵌套,可派生的輔助線程數(shù)目依賴于多核處理器的核數(shù)。(3.4)、當(dāng)輔助線程執(zhí)行完畢后,則與主線程會(huì)和(Join),由主線程單獨(dú)執(zhí)行長事務(wù),如果又遇到可并行的子事務(wù),則轉(zhuǎn)到(3.2),否則直到長事務(wù)執(zhí)行完畢。(4)、長事務(wù)并行執(zhí)行的硬件環(huán)境是多核處理器(或多CPU處理器),這些平臺(tái)為TLP技術(shù)提供了平臺(tái)支撐。本發(fā)明的效果本發(fā)明專利的效果是可以將串行執(zhí)行的長事務(wù)并行化為多個(gè)可以同時(shí)執(zhí)行的子事務(wù),每個(gè)子事務(wù)由一個(gè)線程執(zhí)行,通過多線程并行技術(shù)加速長事務(wù)的執(zhí)行,顯著縮短長事務(wù)的執(zhí)行時(shí)間。


圖1是一個(gè)長事務(wù)的擴(kuò)展有向圖。圖2是長事務(wù)的并行執(zhí)行模式。
具體實(shí)施例方式參照?qǐng)D1和圖2,進(jìn)一步說明本發(fā)明。一種基于多線程的長事務(wù)并行執(zhí)行方法,包括以下步驟:(I)、將長事務(wù)描述為一個(gè)擴(kuò)展的有向圖。長事務(wù)可以形式化表示為一個(gè)擴(kuò)展的有向圖LT=(T,E,R),其中T =U^t2, - ,tj是原子事務(wù)集合,且每個(gè)原子事務(wù)且都具有ACID特性!E=Ie1, e2,…em}是原子事務(wù)間依賴關(guān)系集合,如— tk表示原子事務(wù)tk的開始由h的執(zhí)行結(jié)果決定,若\提交時(shí)tk開始執(zhí)行,則稱為提交依賴,若\回滾時(shí)tk開始執(zhí)行,則稱為回滾依賴;R= Ir1^2,…,rn}是邏輯關(guān)系的集合,如&表示一個(gè)以\為終點(diǎn)的事務(wù)之間的“與”、“或”邏輯表關(guān)系。圖1是一個(gè)包含有11個(gè)原子事務(wù)的長事務(wù)擴(kuò)展有向圖,邊L— t5表示t5執(zhí)行依賴于h的提交,t5 — t7表示t7執(zhí)行依賴于t5的回滾,!T1表示t1(l執(zhí)行由t6、t7、t4、t9的邏輯與決定。(2)、將長事務(wù)LT分割為若干個(gè)可以并行執(zhí)行的子事務(wù)LT’。LT’是長事務(wù)的一個(gè)子集,可以包含一個(gè)或多個(gè)原子事務(wù),即子事務(wù)LT’ =(T,,E,,R,),其中T,ST, Ε,SE,R’ CRo通過將長事務(wù)劃分為若干個(gè)子事務(wù),當(dāng)子事務(wù)之間不存在依賴關(guān)系時(shí)即可并行執(zhí)行。在圖1中構(gòu)成一個(gè)子事務(wù),構(gòu)成一個(gè)子事務(wù),構(gòu)成一個(gè)子事務(wù),這三個(gè)子事務(wù)可以并行執(zhí)行。其分割的具體步驟如下:(2.1)、分析長事務(wù)中所包含的原子事務(wù)、原子事務(wù)之間的依賴關(guān)系、原子事務(wù)直接的邏輯關(guān)系實(shí)現(xiàn),建立長事務(wù)擴(kuò)展有向圖(EDG )。(2.2)、根據(jù)長事務(wù)擴(kuò)展有向圖(EDG),合并有環(huán)子圖,生成擴(kuò)展有向無環(huán)圖(EDAG)0(2.3)、循環(huán)查找EDAG中的順序事務(wù)。若當(dāng)前事務(wù)只有唯一的孩子事務(wù)并且該孩子事務(wù)的父事務(wù)也是唯一的,則將它們是順序事務(wù),合并它們。(2.4)、如果EDAG中僅包含一個(gè)子事務(wù),則說明該長事務(wù)無法并行執(zhí)行,否則輸出并行結(jié)果,該結(jié)果是包含多個(gè)可并行執(zhí)行的子事務(wù)。下面是將長事務(wù)并行化為多個(gè)子事務(wù)的完整算法,用偽代碼進(jìn)行描述。Input: LT= (T, E, R)Output:LT={LTI’,LT2,..,LTn,}lbegin2//根據(jù)原子事務(wù)、原子事務(wù)之間的依賴關(guān)系、 邏輯關(guān)系生成長事務(wù)擴(kuò)展有向圖EDG.
3for (i=0; i< T.number; ; i++)4 EDG=AddTranscations(EDG, Τ.node);5for (i=0;i< E.number;i++)6 EDG=AddEdges (EDG, E.edge)7for (i=0; i< R.number; i++)
8 EDG=AddRules (EDG, E. rule)9//合并EDG中的有環(huán)子圖,生成擴(kuò)展有向無環(huán)圖IOfor (i=0;i<EDG. number/2;i++){11 EDAG=findcycleTransactions(EDAG)12 EDAG=mergecycleTransactions(EDAG);13}14//遞歸找出順序事務(wù),合并這些順序事務(wù)15For(i=0;i=TransactionNumber;i++){16//若當(dāng)前事務(wù)只有唯一的孩子事務(wù)并且該孩子事務(wù)的父事務(wù)也是唯一的,則將它們合并。17 If (currentTransaction has only one child transaction && This childtransaction has only one parent transaction) then18 EDAG =MergeTransactions( currentTransaction, chilldTransaction)19}20If (TranscationNumber==I) then //子事務(wù)數(shù)是 I,退出,無法并行執(zhí)行21 return;22ReturnParalIelTransactions (EDAG) ;// 返回可以并行執(zhí)行的子事務(wù)23end(3)、基于POSIX線程庫(或者Windows線程API)派生若干個(gè)子線程并行執(zhí)行長事務(wù)。長事務(wù)被劃分為若干個(gè)子事務(wù)之后,其執(zhí)行過程如下(3.1)、在長事務(wù)開始執(zhí)行時(shí),只生成一個(gè)線程(稱為主線程),由它負(fù)責(zé)執(zhí)行。(3. 2)、如果遇到可以并行執(zhí)行的子事務(wù)時(shí),則根據(jù)子事務(wù)的數(shù)量派生(Fork)出若干個(gè)子線程(稱為輔助線程)并行執(zhí)行。(3. 3)、在并行子事務(wù)執(zhí)行過程中,如果又遇到可以并行執(zhí)行的子事務(wù),則繼續(xù)派生新的輔助線程來執(zhí)行新的并行子事務(wù),此即為并行嵌套,可派生的輔助線程數(shù)目依賴于多核處理器的核數(shù)。(3. 4)、當(dāng)輔助線程執(zhí)行完畢后,則與主線程會(huì)和(Join),由主線程單獨(dú)執(zhí)行長事務(wù),如果又遇到可并行的子事務(wù),則轉(zhuǎn)到(3. 2),否則直到長事務(wù)執(zhí)行完畢。(4)、長事務(wù)并行執(zhí)行的硬件環(huán)境是多核處理器(或多CPU處理器),這些平臺(tái)為TLP技術(shù)提供了平臺(tái)支撐。
權(quán)利要求
1.一種基于多線程的長事務(wù)并行執(zhí)行方法,其特征在于:并行執(zhí)行長事務(wù)包括以下步驟: (1)、將長事務(wù)描述為一個(gè)擴(kuò)展的有向圖。長事務(wù)可以形式化表示為一個(gè)擴(kuò)展的有向圖LT= (T, E,R),其中T ={tl,t2,…,tn}是原子事務(wù)集合,且每個(gè)原子事務(wù)且都具有ACID特性;E={el,e2,…em}是原子事務(wù)間依賴關(guān)系集合,如ei=ti — tk表示原子事務(wù)tk的開始由ti的執(zhí)行結(jié)果決定,若ti提交時(shí)tk開始執(zhí)行,則稱為提交依賴,若ti回滾時(shí)tk開始執(zhí)行,則稱為回滾依賴;R= {rl,r2,…,rn}是邏輯關(guān)系的集合,如ri表示一個(gè)以ti為終點(diǎn)的事務(wù)之間的“與”、“或”邏輯表關(guān)系。
(2)、將長事務(wù)LT分割為若干個(gè)可以并行執(zhí)行的子事務(wù)LT'LT’是長事務(wù)的一個(gè)子集,可以包含一個(gè)或多個(gè)原子事務(wù),即子事務(wù)LT’=(T’,E’,R’),其中T’ST,E’ SE, R,SR。通過將長事務(wù)劃分為若干個(gè)子事務(wù),當(dāng)子事務(wù)之間不存在依賴關(guān)系時(shí)即可并行執(zhí)行。其分割過程包括以下步驟: (2.1)、分析長事務(wù)中所包含的原子事務(wù)、原子事務(wù)之間的依賴關(guān)系、原子事務(wù)直接的邏輯關(guān)系實(shí)現(xiàn),建立長事務(wù)擴(kuò)展有向圖(EDG)。
(2.2)、根據(jù)長事務(wù)擴(kuò)展有向圖(EDG),合并有環(huán)子圖,生成擴(kuò)展有向無環(huán)圖(EDAG)。
(2.3)、循環(huán)查找EDAG中的順序事務(wù)。若當(dāng)前事務(wù)只有唯一的孩子事務(wù)并且該孩子事務(wù)的父事務(wù)也是唯一的,則將它們是順序事務(wù),合并它們。
(2.4)、如果EDAG中僅包含一個(gè)子事務(wù),則說明該長事務(wù)無法并行執(zhí)行,否則輸出并行結(jié)果,該結(jié)果是包含多個(gè)可并行執(zhí)行的子事務(wù)。
(3 )、基于POSIX線程庫(OpenM語言或者Windows線程API)派生若干個(gè)子線程并行執(zhí)行長事務(wù)。長事務(wù)被劃分為若干個(gè)子事務(wù)之后,其執(zhí)行過程如下: (3.1)、在長事務(wù)開始執(zhí)行時(shí),只生成一個(gè)線程(稱為主線程),由它負(fù)責(zé)執(zhí)行。
(3.2)如果遇到可以并行執(zhí)行的子事務(wù)時(shí),則根據(jù)子事務(wù)的數(shù)量派生(Fork)出若干個(gè)子線程(稱為輔助線程)并行執(zhí)行。
(3.3)、在并行子事務(wù)執(zhí)行過程中,如果又遇到可以并行執(zhí)行的子事務(wù),則繼續(xù)派生新的輔助線程來執(zhí)行新的并行子事務(wù),此即為并行嵌套,可派生的輔助線程數(shù)目依賴于多核處理器的核數(shù)。
(3.4)、當(dāng)輔助線程執(zhí)行完畢后,則與主線程會(huì)和(Join),由主線程單獨(dú)執(zhí)行長事務(wù),如果又遇到可并行的子事務(wù),則轉(zhuǎn)到(3.2),否則直到長事務(wù)執(zhí)行完畢。
(4)、長事務(wù)并行執(zhí)行的硬件環(huán)境是多核處理器(或多CPU處理器),這些平臺(tái)為TLP技術(shù)提供了平臺(tái)支撐。
全文摘要
長事務(wù)是指包含多個(gè)原子事務(wù)且執(zhí)行時(shí)間較長的事務(wù),串行地執(zhí)行這些原子事務(wù)不僅將使長事務(wù)執(zhí)行時(shí)間較長,而且還占用較多的系統(tǒng)資源,導(dǎo)致系統(tǒng)運(yùn)行效率降低。本發(fā)明公開了一種基于多線程的長事務(wù)并行執(zhí)行方法,包括以下步驟(1)將長事務(wù)形式化描述為一個(gè)擴(kuò)展的有向圖;(2)將LT分割為若干個(gè)可以并行執(zhí)行的子事務(wù)LT,給出了其分割算法;(3) 基于POSIX線程庫(或者Windows線程API)派生若干個(gè)子線程以并行嵌套的模式執(zhí)行長事務(wù)。(4)并行化后的代碼需要運(yùn)行在多核處理器(或多CPU處理器)上。該發(fā)明可以顯著縮短長事務(wù)的執(zhí)行時(shí)間,提高長事務(wù)執(zhí)行效率,可應(yīng)用于面向服務(wù)架構(gòu)SOA、服務(wù)組合、事務(wù)處理等領(lǐng)域。
文檔編號(hào)G06F9/38GK103077006SQ201210579859
公開日2013年5月1日 申請(qǐng)日期2012年12月27日 優(yōu)先權(quán)日2012年12月27日
發(fā)明者張?jiān)Q, 肖剛, 高飛, 陸佳煒, 徐俊, 吳利群 申請(qǐng)人:浙江工業(yè)大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1