一種分布式事務提交故障的處理方法、裝置和系統(tǒng)的制作方法
【專利摘要】本發(fā)明實施例提供了一種分布式事務提交故障的處理方法和裝置,所述方法包括:在完成分布式事務的第一階段提交后,第一節(jié)點記錄所述分布式事務的狀態(tài)為未結(jié)束;所述第一節(jié)點故障或所述第一節(jié)點與第二節(jié)點之間的網(wǎng)絡連接故障且故障恢復后,根據(jù)所述記錄的分布式事務的狀態(tài)為未結(jié)束,向所述第二節(jié)點發(fā)送事務狀態(tài)查詢請求,所述事務狀態(tài)查詢請求包含所述分布式事務的標識;根據(jù)所述第二節(jié)點返回的所述分布式事務的狀態(tài),進行所述分布式事務的第二階段的修復。使用本發(fā)明能夠解決分布式事務第二階段提交出現(xiàn)故障時無法自動修復的問題,并且保證了分布式事務的原子性和一致性。
【專利說明】一種分布式事務提交故障的處理方法、裝置和系統(tǒng)
【技術(shù)領域】
[0001]本發(fā)明涉及通信網(wǎng)絡【技術(shù)領域】,尤其涉及一種分布式事務提交故障的處理方法、裝置和系統(tǒng)。
【背景技術(shù)】
[0002]事務(Transaction)是一個操作序列為實現(xiàn)特定業(yè)務功能而訪問數(shù)據(jù)庫的最小邏輯工作單位,通常包含本地事務和分布式事務、又稱全局事務。
[0003]分布式事務是指一個事務可能涉及多個數(shù)據(jù)庫操作,例如,一個事務中可能更新幾個不同的數(shù)據(jù)庫。當對這些數(shù)據(jù)庫進行操作后,對這些數(shù)據(jù)庫的修改必須全部被提交或回滾,提交指將修改后的數(shù)據(jù)寫入到磁盤,回滾指取消修改,不允許有的數(shù)據(jù)庫提交而有的數(shù)據(jù)庫沒有提交,該特性稱為事務的原子性和一致性。此時一個數(shù)據(jù)庫對自己內(nèi)部所做操作的提交不僅依賴本身操作是否成功,還要依賴與分布式事務相關的其它數(shù)據(jù)庫的操作是否成功,如果任一數(shù)據(jù)庫的任一操作失敗,則參與此事務的所有數(shù)據(jù)庫所做的所有操作都必須回滾。
[0004]一般情況下,某一數(shù)據(jù)庫無法知道其它數(shù)據(jù)庫在做什么,因此,通常的需要引入一個事務管理器作為交易中間件進行協(xié)調(diào)控制,并且采用兩階段來完成一個分布式事務的提交,其具體過程如下:
[0005]事務管理器接收到應用程序的事務提交請求后,通知與該事務關聯(lián)的各個數(shù)據(jù)庫執(zhí)行兩階段的事務提交。
[0006]在第一階段,事務管理器請求各個數(shù)據(jù)庫準備提交各自的事務分支,以確認是否所有相關數(shù)據(jù)庫都可以提交各自的事務分支,該第一階段提交稱為預提交,各自的事務分支稱為本地事務。當某一數(shù)據(jù)庫收到預提交請求后,如果可以提交屬于自己的事務分支,則將自己在該事務分支中所做的數(shù)據(jù)操作記錄到該數(shù)據(jù)庫的重做日志(Redo Log),并給事務管理器一個同意提交的應答,但此時數(shù)據(jù)庫并沒有真正提交該事務。事務管理器審查各個數(shù)據(jù)庫返回的預提交結(jié)果,如都可以提交,事務管理器要求各個數(shù)據(jù)庫做正式提交、進入第二階段。如果有任一數(shù)據(jù)庫預提交返回失敗,事務管理器將要求所有其它數(shù)據(jù)庫回滾其操作,這樣該分布式事務被回滾。
[0007]在第二階段,事務管理器要求各個數(shù)據(jù)庫執(zhí)行正式提交,這樣該分布式事務被提交;正式提交包括在重做日志中記錄commit操作,并將修改后的數(shù)據(jù)寫入磁盤,當接收到各個數(shù)據(jù)庫第二階段提交成功的響應后,事務管理器結(jié)束該分布式事務,并通知應用程序事務提交成功。
[0008]但是在第二階段,當事務管理器、數(shù)據(jù)庫故障(例如突然宕機),或者兩者之間的網(wǎng)絡連接異常時,可能出現(xiàn)部分數(shù)據(jù)庫成功提交了事務、部分數(shù)據(jù)庫沒有完成提交的情況,因為各數(shù)據(jù)庫是相互獨立的,無法感知對方的狀態(tài),該場景下沒有完成提交的數(shù)據(jù)庫將不知道如何處理未結(jié)束的事務,導致該事務無法自動修復,從而事務的原子性和一致性無法得到保證;或者事務管理器接收不到數(shù)據(jù)庫返回的第二階段提交響應,導致事務無法自動修復。即現(xiàn)有技術(shù)中,在分布式事務第二階段提交過程中出現(xiàn)故障時存在該事務無法自動修復的缺陷。
【發(fā)明內(nèi)容】
[0009]本發(fā)明實施例提供了一種分布式事務的提交故障的處理方法、裝置和系統(tǒng),用于解決分布式事務第二階段提交出現(xiàn)故障時無法自動修復的問題,并且保證了分布式事務的原子性和一致性。
[0010]第一方面,本發(fā)明實施例提供的分布式事務提交故障的處理方法包括:在完成分布式事務的第一階段提交后,第一節(jié)點記錄所述分布式事務的狀態(tài)為未結(jié)束;所述第一節(jié)點故障或所述第一節(jié)點與第二節(jié)點之間的網(wǎng)絡連接故障且故障恢復后,根據(jù)所述記錄的分布式事務的狀態(tài)為未結(jié)束,向所述第二節(jié)點發(fā)送事務狀態(tài)查詢請求,所述事務狀態(tài)查詢請求包含所述分布式事務的標識,其中,所述第一節(jié)點為事務管理器,所述第二節(jié)點為與所述分布式事務關聯(lián)的數(shù)據(jù)庫,或者,所述第一節(jié)點為與所述分布式事務關聯(lián)的數(shù)據(jù)庫,所述第二節(jié)點為事務管理器;根據(jù)所述第二節(jié)點返回的所述分布式事務的狀態(tài),進行所述分布式事務的第二階段的修復。
[0011]在第一方面的第一種可能的實現(xiàn)方式中,所述第一節(jié)點為與所述分布式事務關聯(lián)的數(shù)據(jù)庫,所述第二節(jié)點為事務管理器;所述第二節(jié)點返回的所述分布式事務的狀態(tài)為未結(jié)束,所述進行所述分布式事務的第二階段的修復包括所述數(shù)據(jù)庫執(zhí)行所述分布式事務的第二階段提交以及向所述事務管理器返回所述第二階段提交的結(jié)果。
[0012]在第一方面的第二種可能的實現(xiàn)方式中,所述第一節(jié)點為事務管理器,所述第二節(jié)點為與所述分布式事務關聯(lián)的數(shù)據(jù)庫;所述第二節(jié)點返回的所述分布式事務的狀態(tài)為未結(jié)束,所述進行所述分布式事務的第二階段的修復包括所述事務管理器向所述數(shù)據(jù)庫發(fā)送第二階段提交請求。
[0013]在第一方面的第三種可能的實現(xiàn)方式中,所述第一節(jié)點為事務管理器,所述第二節(jié)點為與所述分布式事務關聯(lián)的數(shù)據(jù)庫;所述第二節(jié)點返回的所述分布式事務的狀態(tài)為已完成,所述進行所述分布式事務的第二階段的修復包括所述事務管理器判斷與所述分布式事務關聯(lián)的其他數(shù)據(jù)庫都完成第二階段提交后終止所述分布式事務。
[0014]在第一方面的第四種可能的實現(xiàn)方式中,所述第一節(jié)點為事務管理器,所述第二節(jié)點為與所述分布式事務關聯(lián)的數(shù)據(jù)庫;所述第二節(jié)點返回的所述分布式事務的狀態(tài)為已失敗,所述進行所述分布式事務的第二階段的修復包括所述事務管理器終止所述分布式事務。
[0015]結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,所述數(shù)據(jù)庫執(zhí)行所述分布式事務的第二階段提交以后,還包括記錄所述分布式事務的狀態(tài)為已結(jié)束。
[0016]第二方面,本發(fā)明實施例提供的處理分布式事務提交故障的第一裝置,所述第一裝置為事務管理器或者與所述分布式事務關聯(lián)的數(shù)據(jù)庫,包括:
[0017]記錄單元,用于在完成分布式事務的第一階段提交后記錄所述分布式事務的狀態(tài)為未結(jié)束;
[0018]發(fā)送單元,用于所述第一裝置故障或所述第一裝置與第二裝置之間的網(wǎng)絡連接故障且故障恢復后,根據(jù)所述記錄單元記錄的分布式事務的狀態(tài)為未結(jié)束,向所述第二裝置發(fā)送事務狀態(tài)查詢請求,所述事務狀態(tài)查詢請求包含所述分布式事務的標識,其中,所述第一裝置為事務管理器時,所述第二裝置為與所述分布式事務關聯(lián)的數(shù)據(jù)庫,所述第一裝置為與所述分布式事務關聯(lián)的數(shù)據(jù)庫時,所述第二裝置為事務管理器;
[0019]接收單元,用于接收所述第二裝置返回的所述分布式事務的狀態(tài);
[0020]修復單元,用于根據(jù)所述接收單元接收的所述分布式事務的狀態(tài),進行所述分布式事務的第二階段的修復。
[0021]在第一方面的第一種可能的實現(xiàn)方式中,所述第一裝置為與所述分布式事務關聯(lián)的數(shù)據(jù)庫,所述第二裝置為事務管理器;所述第二裝置返回的所述分布式事務的狀態(tài)為未結(jié)束,所述修復單元,用于進行所述分布式事務的第二階段的修復包括執(zhí)行所述分布式事務的第二階段提交以及通知所述發(fā)送單元向所述事務管理器返回所述第二階段提交的結(jié)
果O
[0022]在第一方面的第二種可能的實現(xiàn)方式中,所述第一裝置為事務管理器,所述第二裝置為與所述分布式事務關聯(lián)的數(shù)據(jù)庫;所述第二裝置返回的所述分布式事務的狀態(tài)為未結(jié)束,所述修復單元,用于進行所述分布式事務的第二階段的修復包括通知所述發(fā)送單元向所述數(shù)據(jù)庫發(fā)送第二階段提交請求。
[0023]在第一方面的第三種可能的實現(xiàn)方式中,所述第一裝置為事務管理器,所述第二裝置為與所述分布式事務關聯(lián)的數(shù)據(jù)庫;所述第二裝置返回的所述分布式事務的狀態(tài)為已完成,所述修復單元,用于進行所述分布式事務的第二階段的修復包括判斷與所述分布式事務關聯(lián)的其他數(shù)據(jù)庫都完成第二階段提交后終止所述分布式事務。
[0024]在第一方面的第四種可能的實現(xiàn)方式中,所述第一裝置為事務管理器,所述第二裝置為與所述分布式事務關聯(lián)的數(shù)據(jù)庫;所述第二裝置返回的所述分布式事務的狀態(tài)為已失敗,所述修復單元,用于進行所述分布式事務的第二階段的修復包括終止所述分布式事務。
[0025]結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,所述第一裝置還包括記錄單元,用于在所述修復單元執(zhí)行所述分布式事務的第二階段提交以后,記錄所述分布式事務的狀態(tài)為已結(jié)束。
[0026]第三方面,本發(fā)明實施例提供的分布式事務提交故障的處理系統(tǒng)包括:根據(jù)第二方面中任一可能的數(shù)據(jù)庫;和根據(jù)第二方面任一可能的事務管理器。
[0027]由以上技術(shù)方案可以看出,由于本發(fā)明實施例通過在完成分布式事務的第一階段提交后,第一節(jié)點記錄所述分布式事務的狀態(tài)為未結(jié)束;所述第一節(jié)點故障或所述第一節(jié)點與第二節(jié)點之間的網(wǎng)絡連接故障且故障恢復后,根據(jù)所述記錄的分布式事務的狀態(tài)為未結(jié)束,向所述第二節(jié)點發(fā)送事務狀態(tài)查詢請求,所述事務狀態(tài)查詢請求包含所述分布式事務的標識;根據(jù)所述第二節(jié)點返回的所述分布式事務的狀態(tài),進行所述分布式事務的第二階段的修復,實現(xiàn)了當在第二階段的正式提交過程中出現(xiàn)了故障時分布式事務能夠自動修復,并且保證分布式事務的原子性和一致性。
【專利附圖】
【附圖說明】
[0028]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0029]圖1為本發(fā)明一個實施例提供的分布式事務提交故障的處理方法流程圖;
[0030]圖2為本發(fā)明一個實施例提供的分布式事務提交故障的處理方法信令流程圖;
[0031]圖3為本發(fā)明另一個實施例提供的分布式事務提交故障的處理方法信令流程圖;
[0032]圖4為本發(fā)明又一個實施例提供的分布式事務提交故障的處理方法信令流程圖;
[0033]圖5為本發(fā)明實施例提供的數(shù)據(jù)庫的裝置結(jié)構(gòu)圖;
[0034]圖6為本發(fā)明實施例提供的事務管理器的裝置結(jié)構(gòu)圖;
[0035]圖7為本發(fā)明實施例提供的基于計算機系統(tǒng)的數(shù)據(jù)庫的裝置結(jié)構(gòu)圖;
[0036]圖8為本發(fā)明實施例提供的基于計算機系統(tǒng)的事務管理器的裝置結(jié)構(gòu)圖;
[0037]圖9為本發(fā)明實施例提供的分布式事務故障的處理系統(tǒng)結(jié)構(gòu)圖。
【具體實施方式】
[0038]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0039]本發(fā)明實施例提供了分布式事務提交故障的處理方法,應用于與分布式事務關聯(lián)的數(shù)據(jù)庫或事務管理器中,請參照圖1,該方法包括:
[0040]步驟101:在完成分布式事務的第一階段提交后,第一節(jié)點記錄所述分布式事務的狀態(tài)為未結(jié)束。
[0041]其中,第一節(jié)點為事務管理器或者與分布式事務關聯(lián)的數(shù)據(jù)庫。
[0042]具體的,當數(shù)據(jù)庫完成分布式事務的第一階段提交后記錄所述分布式事務的狀態(tài)為未結(jié)束,當事務管理器接收到所有數(shù)據(jù)庫返回的第一階段提交成功響應后,記錄所述分布式事務的狀態(tài)為未結(jié)束。
[0043]步驟102:第一節(jié)點故障或所述第一節(jié)點與第二節(jié)點之間的網(wǎng)絡連接故障且故障恢復后,根據(jù)所述記錄的分布式事務的狀態(tài)為未結(jié)束,向所述第二節(jié)點發(fā)送事務狀態(tài)查詢請求,所述事務狀態(tài)查詢請求包含所述分布式事務的標識,其中,所述第一節(jié)點為事務管理器,所述第二節(jié)點為與所述分布式事務關聯(lián)的數(shù)據(jù)庫,或者,所述第一節(jié)點為與所述分布式事務關聯(lián)的數(shù)據(jù)庫,所述第二節(jié)點為事務管理器。
[0044]步驟103:根據(jù)所述第二節(jié)點返回的所述分布式事務的狀態(tài),進行所述分布式事務的第二階段的修復。
[0045]其中,當所述第一節(jié)點為與所述分布式事務關聯(lián)的數(shù)據(jù)庫,所述第二節(jié)點為事務管理器,且所述第二節(jié)點返回的所述分布式事務的狀態(tài)為未結(jié)束時,所述進行所述分布式事務的第二階段的修復包括所述數(shù)據(jù)庫執(zhí)行所述分布式事務的第二階段提交以及向所述事務管理器返回所述第二階段提交的結(jié)果。
[0046]可選的,在所述數(shù)據(jù)庫執(zhí)行所述分布式事務的第二階段提交成功以后,還包括記錄所述分布式事務的狀態(tài)為已結(jié)束。[0047]其中,當所述第一節(jié)點為事務管理器,所述第二節(jié)點為與所述分布式事務關聯(lián)的數(shù)據(jù)庫,且所述第二節(jié)點返回的所述分布式事務的狀態(tài)為未結(jié)束時,所述進行所述分布式事務的第二階段的修復包括所述事務管理器向所述數(shù)據(jù)庫發(fā)送第二階段提交請求。
[0048]其中,當所述第一節(jié)點為事務管理器,所述第二節(jié)點為與所述分布式事務關聯(lián)的數(shù)據(jù)庫,且所述第二節(jié)點返回的所述分布式事務的狀態(tài)為已結(jié)束時,所述進行所述分布式事務的第二階段的修復包括所述事務管理器判斷與所述分布式事務關聯(lián)的各個數(shù)據(jù)庫都完成第二階段提交后終止所述分布式事務。
[0049]其中,當所述第一節(jié)點為事務管理器,所述第二節(jié)點為與所述分布式事務關聯(lián)的數(shù)據(jù)庫,且所述第二節(jié)點返回的所述分布式事務的狀態(tài)為已失敗時,所述進行所述分布式事務的第二階段的修復包括所述事務管理器終止所述分布式事務。
[0050]本發(fā)明實施例提供了分布式事務提交故障的處理方法信令流程圖,請參照圖2,在本實施例中,分布式事務由數(shù)據(jù)庫I和數(shù)據(jù)庫2共同完成,具體流程包括:
[0051]步驟201:應用程序向事務管理器發(fā)送分布式事務提交請求,所述分布式事務提交請求包含分布式事務標識。
[0052]具體的,應用程序通知事務管理器開啟一個分布式事務,并告知事務管理器這個分布式事務中包含了數(shù)據(jù)庫I和數(shù)據(jù)庫2。事務管理器分別通知數(shù)據(jù)庫1、數(shù)據(jù)庫2開啟本地事務。數(shù)據(jù)庫1、2開啟本地事務成功后,會將事務管理器的訪問方式記錄到本地的REDO日志中,并返回事務開啟成功給事務管理器,其中,事務管理器的訪問方式可以是事務管理器ID或者事務管理器的IP地址。應用程序通過調(diào)用數(shù)據(jù)庫1、2提供的接口完成對所述所有數(shù)據(jù)庫上的數(shù)據(jù)修改后,向事務管理器發(fā)送分布式事務提交請求。
[0053]步驟202?203:事務管理器獲取與所述分布式事務關聯(lián)的各個數(shù)據(jù)庫、即數(shù)據(jù)庫I和數(shù)據(jù)庫2的標識后,向數(shù)據(jù)庫I和數(shù)據(jù)庫2發(fā)送第一階段提交請求,所述第一階段提交請求包含所述分布式事務標識。
[0054]具體的,事務管理器從應用程序發(fā)送的分布式事務提交請求中獲取到與所述分布式事務關聯(lián)的各個數(shù)據(jù)庫的標識。可選的,事務管理器收到應用程序的分布式事務提交請求后,先在本地REDO日志中記錄當前事務狀態(tài)為“等待第一階段提交完成”,然后通知數(shù)據(jù)庫1、2做第一階段提交。
[0055]其中,步驟202和步驟203沒有嚴格的先后順序。
[0056]步驟204:數(shù)據(jù)庫I在完成所述第一階段提交后,記錄所述分布式事務的狀態(tài)為未結(jié)束,然后向事務管理器返回第一階段提交成功響應。
[0057]其中,數(shù)據(jù)庫I執(zhí)行第一階段提交具體包含:根據(jù)所述分布式事務標識查詢到與所述分布式事務對應的本地事務后,將該本地事務所做的數(shù)據(jù)操作記錄到數(shù)據(jù)庫I上的重做日志。
[0058]其中,數(shù)據(jù)庫I可以通過在重做日志上記錄所述分布式事務的狀態(tài)為未結(jié)束。具體的,數(shù)據(jù)庫和事務管理器可以記錄事務狀態(tài)的重做日志模板如表I所示:
[0059]表I可以記錄事務狀態(tài)的重做日志模板
[0060]
【權(quán)利要求】
1.一種分布式事務提交故障的處理方法,其特征在于,所述方法包括: 在完成分布式事務的第一階段提交后,第一節(jié)點記錄所述分布式事務的狀態(tài)為未結(jié)束; 所述第一節(jié)點故障或所述第一節(jié)點與第二節(jié)點之間的網(wǎng)絡連接故障且故障恢復后,根據(jù)所述記錄的分布式事務的狀態(tài)為未結(jié)束,向所述第二節(jié)點發(fā)送事務狀態(tài)查詢請求,所述事務狀態(tài)查詢請求包含所述分布式事務的標識,其中,所述第一節(jié)點為事務管理器,所述第二節(jié)點為與所述分布式事務關聯(lián)的數(shù)據(jù)庫,或者,所述第一節(jié)點為與所述分布式事務關聯(lián)的數(shù)據(jù)庫,所述第二節(jié)點為事務管理器; 根據(jù)所述第二節(jié)點返回的所述分布式事務的狀態(tài),進行所述分布式事務的第二階段的修復。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于: 所述第一節(jié)點為與所述分布式事務關聯(lián)的數(shù)據(jù)庫,所述第二節(jié)點為事務管理器; 所述第二節(jié)點返回的所述分布式事務的狀態(tài)為未結(jié)束,所述進行所述分布式事務的第二階段的修復包括所述數(shù)據(jù)庫執(zhí)行所述分布式事務的第二階段提交以及向所述事務管理器返回所述第二階段提交的結(jié)果。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于: 所述數(shù)據(jù)庫執(zhí)行所述分布式 事務的第二階段提交以后,還包括記錄所述分布式事務的狀態(tài)為已結(jié)束。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于: 所述第一節(jié)點為事務管理器,所述第二節(jié)點為與所述分布式事務關聯(lián)的數(shù)據(jù)庫; 所述第二節(jié)點返回的所述分布式事務的狀態(tài)為未結(jié)束,所述進行所述分布式事務的第二階段的修復包括所述事務管理器向所述數(shù)據(jù)庫發(fā)送第二階段提交請求。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于: 所述第一節(jié)點為事務管理器,所述第二節(jié)點為與所述分布式事務關聯(lián)的數(shù)據(jù)庫; 所述第二節(jié)點返回的所述分布式事務的狀態(tài)為已完成,所述進行所述分布式事務的第二階段的修復包括所述事務管理器判斷與所述分布式事務關聯(lián)的其他數(shù)據(jù)庫都完成第二階段提交后終止所述分布式事務。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于: 所述第一節(jié)點為事務管理器,所述第二節(jié)點為與所述分布式事務關聯(lián)的數(shù)據(jù)庫; 所述第二節(jié)點返回的所述分布式事務的狀態(tài)為已失敗,所述進行所述分布式事務的第二階段的修復包括所述事務管理器終止所述分布式事務。
7.—種處理分布式事務提交故障的第一裝置,所述第一裝置為事務管理器或者與所述分布式事務關聯(lián)的數(shù)據(jù)庫,其特征在于,所述第一裝置包括: 記錄單元,用于在完成分布式事務的第一階段提交后記錄所述分布式事務的狀態(tài)為未結(jié)束; 發(fā)送單元,用于所述第一裝置故障或所述第一裝置與第二裝置之間的網(wǎng)絡連接故障且故障恢復后,根據(jù)所述記錄單元記錄的分布式事務的狀態(tài)為未結(jié)束,向所述第二裝置發(fā)送事務狀態(tài)查詢請求,所述事務狀態(tài)查詢請求包含所述分布式事務的標識,其中,所述第一裝置為事務管理器時,所述第二裝置為與所述分布式事務關聯(lián)的數(shù)據(jù)庫,所述第一裝置為與所述分布式事務關聯(lián)的數(shù)據(jù)庫時,所述第二裝置為事務管理器; 接收單元,用于接收所述第二裝置返回的所述分布式事務的狀態(tài); 修復單元,用于根據(jù)所述接收單元接收的所述分布式事務的狀態(tài),進行所述分布式事務的第二階段的修復。
8.根據(jù)權(quán)利要求7所述的第一裝置,其特征在于: 所述第一裝置為與所述分布式事務關聯(lián)的數(shù)據(jù)庫,所述第二裝置為事務管理器; 所述第二裝置返回的所述分布式事務的狀態(tài)為未結(jié)束,所述修復單元,用于進行所述分布式事務的第二階段的修復包括執(zhí)行所述分布式事務的第二階段提交以及通知所述發(fā)送單元向所述事務管理器返回所述第二階段提交的結(jié)果。
9.根據(jù)權(quán)利要求8所述的第一裝置,其特征在于,還包括: 記錄單元,用于在所述修復單元執(zhí)行所述分布式事務的第二階段提交以后,記錄所述分布式事務的狀態(tài)為已結(jié)束。
10.根據(jù)權(quán)利要求7所述的第一裝置,其特征在于: 所述第一裝置為事務管理器,所述第二裝置為與所述分布式事務關聯(lián)的數(shù)據(jù)庫; 所述第二裝置返回的所述分布式事務的狀態(tài)為未結(jié)束,所述修復單元,用于進行所述分布式事務的第二階 段的修復包括通知所述發(fā)送單元向所述數(shù)據(jù)庫發(fā)送第二階段提交請求。
11.根據(jù)權(quán)利要求7所述的第一裝置,其特征在于: 所述第一裝置為事務管理器,所述第二裝置為與所述分布式事務關聯(lián)的數(shù)據(jù)庫; 所述第二裝置返回的所述分布式事務的狀態(tài)為已完成,所述修復單元,用于進行所述分布式事務的第二階段的修復包括判斷與所述分布式事務關聯(lián)的其他數(shù)據(jù)庫都完成第二階段提交后終止所述分布式事務。
12.根據(jù)權(quán)利要求7所述的第一裝置,其特征在于: 所述第一裝置為事務管理器,所述第二裝置為與所述分布式事務關聯(lián)的數(shù)據(jù)庫; 所述第二裝置返回的所述分布式事務的狀態(tài)為已失敗,所述修復單元,用于進行所述分布式事務的第二階段的修復包括終止所述分布式事務。
13.—種分布式事務提交故障的處理系統(tǒng),其特征在于,所述系統(tǒng)包括: 根據(jù)權(quán)利要求中7至12任一所述的數(shù)據(jù)庫;和 根據(jù)權(quán)利要求中7至12任一所述的事務管理器。
【文檔編號】G06F17/30GK103559245SQ201310522398
【公開日】2014年2月5日 申請日期:2013年10月29日 優(yōu)先權(quán)日:2013年10月29日
【發(fā)明者】姚理, 朱仲楚, 邱濤 申請人:華為技術(shù)有限公司