欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種處理分布式事務(wù)的方法和裝置制造方法

文檔序號:6486252閱讀:221來源:國知局
一種處理分布式事務(wù)的方法和裝置制造方法
【專利摘要】本發(fā)明公開一種處理分布式事務(wù)的方法和裝置,所述方法包括:事務(wù)管理器依據(jù)應(yīng)用啟動事務(wù);事務(wù)協(xié)調(diào)器將事務(wù)拆分為多個任務(wù),將各個事務(wù)的同類型的任務(wù)分配給同一個任務(wù)處理器,并依據(jù)任務(wù)執(zhí)行順序向相應(yīng)任務(wù)處理器發(fā)送執(zhí)行指示;任務(wù)處理器對于接收到的執(zhí)行指示對應(yīng)的任務(wù),依據(jù)執(zhí)行時間將同類型的任務(wù)合并,通過資源適配器調(diào)用資源執(zhí)行合并的任務(wù),并將執(zhí)行結(jié)果反饋給事務(wù)協(xié)調(diào)器;事務(wù)協(xié)調(diào)器依據(jù)反饋的執(zhí)行結(jié)果,通知事務(wù)管理器結(jié)束事務(wù),或調(diào)用任務(wù)處理器回滾已經(jīng)執(zhí)行的任務(wù),并在回滾完成后通知事務(wù)管理器結(jié)束事務(wù)。本發(fā)明能夠解決多個同類型事務(wù)的整體執(zhí)行時間過長的問題。
【專利說明】一種處理分布式事務(wù)的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機領(lǐng)域,特別涉及一種處理分布式事務(wù)的方法和裝置。
【背景技術(shù)】
[0002]Χ/Open組織(即現(xiàn)在的Open Group)定義了分布式事務(wù)處理模型。X/0pen DTP(Distributed Transaction Processing,分布式事物處理)模型(1994)包括應(yīng)用程序(AP)、事務(wù)管理器(TM)、資源管理器(RM)、通信資源管理器(CRM)四部分。一般,常見的事務(wù)管理器(TM)是交易中間件,常見的資源管理器(RM)是數(shù)據(jù)庫,常見的通信資源管理器(CRM)是消息中間件。其中,事務(wù)(Transaction)是并發(fā)控制的單位,為用戶定義的一個操作序列。這些操作要么都做,要么都不做,是一個可以分割的工作單元。分布式事務(wù)處理是指一個事務(wù)可能涉及多個操作。
[0003]通常情況下,交易中間件與數(shù)據(jù)庫通過XA接口規(guī)范(XA就是X/OpenDTP定義的交易中間件與數(shù)據(jù)庫之間的接口規(guī)范(即接口函數(shù)),交易中間件用它來通知數(shù)據(jù)庫事務(wù)的開始、結(jié)束以及提交、回滾等),使用兩階段提交來完成一個全局事務(wù),XA規(guī)范的基礎(chǔ)是兩階段提交協(xié)議。
[0004]在第一階段,交易中間件請求所有相關(guān)數(shù)據(jù)庫準備提交(預(yù)提交)各自的事務(wù)分支,以確認是否所有相關(guān)數(shù)據(jù)庫都可以提交各自的事務(wù)分支。當某一數(shù)據(jù)庫收到預(yù)提交指令后,如果可以提交屬于自己的事務(wù)分支,則將自己在該事務(wù)分支中所做的操作固定記錄下來,并給交易中間件一個同意提交的應(yīng)答,此時數(shù)據(jù)庫將不能再在該事務(wù)分支中加入任何操作,但此時數(shù)據(jù)庫并沒有真正提交該事務(wù),數(shù)據(jù)庫對共享資源的操作還未釋放(處于上鎖狀態(tài))。如果由于某種原因數(shù)據(jù)庫無法提交屬于自己的事務(wù)分支,它將回滾自己的所有操作,釋放對共享資源上的鎖,并返回給交易中間件失敗應(yīng)答。
[0005]在第二階段,交易中間件審查所有數(shù)據(jù)庫返回的預(yù)提交結(jié)果,如所有數(shù)據(jù)庫都可以提交,交易中間件將要求所有數(shù)據(jù)庫做正式提交,這樣該全局事務(wù)被提交。而如果有任一數(shù)據(jù)庫預(yù)提交返回失敗,交易中間件將要求所有其它數(shù)據(jù)庫回滾其操作,這樣該全局事務(wù)被回滾。
[0006]現(xiàn)有分布式事務(wù)技術(shù)存在如下缺陷:
[0007]從性能角度看,首先因為在現(xiàn)有技術(shù)中,一個事務(wù)中的各個操作通常是順序執(zhí)行的,因此事務(wù)的總持續(xù)時間通常是各實例操作時間之和,這樣事務(wù)的響應(yīng)時間就會大大增加。
[0008]其次,一般應(yīng)用的事務(wù)都不大,單機操作時間也就幾毫秒甚至不到I毫秒,一旦涉及到分布式事務(wù),提交時節(jié)點(包括數(shù)據(jù)庫和事務(wù)管理器)間的網(wǎng)絡(luò)通信往返過程也為毫秒級別,對事務(wù)響應(yīng)時間的影響也不可忽視。
[0009]由于事務(wù)持續(xù)時間延長,事務(wù)對相關(guān)資源的鎖定時間也相應(yīng)增加,從而可能嚴重增加了并發(fā)沖突,進而影響到系統(tǒng)吞吐率。
【發(fā)明內(nèi)容】

[0010]本發(fā)明提供的一種處理分布式事務(wù)的方法和裝置,以解決多個同類型事務(wù)的整體執(zhí)行時間過長的問題。
[0011]本發(fā)明公開了一種處理分布式事務(wù)的方法,所述方法包括:
[0012]事務(wù)管理器依據(jù)應(yīng)用啟動事務(wù);
[0013]事務(wù)協(xié)調(diào)器將事務(wù)拆分為多個任務(wù),將各個事務(wù)的同類型的任務(wù)分配給同一個任務(wù)處理器,并依據(jù)任務(wù)執(zhí)行順序向相應(yīng)任務(wù)處理器發(fā)送執(zhí)行指示;
[0014]任務(wù)處理器對于接收到的執(zhí)行指示對應(yīng)的任務(wù),依據(jù)執(zhí)行時間將同類型的任務(wù)合并,通過資源適配器調(diào)用資源執(zhí)行合并的任務(wù),并將執(zhí)行結(jié)果反饋給事務(wù)協(xié)調(diào)器;
[0015]事務(wù)協(xié)調(diào)器依據(jù)反饋的執(zhí)行結(jié)果,通知事務(wù)管理器結(jié)束事務(wù),或調(diào)用任務(wù)處理器回滾已經(jīng)執(zhí)行的任務(wù),并在回滾完成后通知事務(wù)管理器結(jié)束事務(wù)。
[0016]較佳的,所述依據(jù)反饋的執(zhí)行結(jié)果,通知事務(wù)管理器結(jié)束事務(wù)或調(diào)用任務(wù)處理器回滾已經(jīng)執(zhí)行的任務(wù)具體包括:
[0017]對于每個事務(wù),在所述事務(wù)的所有任務(wù)的執(zhí)行結(jié)果都為成功時,通知事務(wù)管理器結(jié)束所述事務(wù),在所述事務(wù)的任何一個任務(wù)的執(zhí)行結(jié)果為失敗時,調(diào)用任務(wù)處理器回滾該事務(wù)已經(jīng)執(zhí)行的任務(wù)。
[0018]較佳的,在所述事務(wù)協(xié)調(diào)器調(diào)用任務(wù)處理器回滾已經(jīng)執(zhí)行的任務(wù)后還包括:
[0019]任務(wù)處理器接收到事務(wù)協(xié)調(diào)器發(fā)送的回滾指示后,根據(jù)回滾時間將待回滾的同類型任務(wù)進行合并,通過資源適配器對合并的任務(wù)進行回滾。
[0020]較佳的,所述依據(jù)執(zhí)行時間將同類型的任務(wù)合并具體包括:
[0021]將執(zhí)行時間在預(yù)設(shè)時長內(nèi)的同類型任務(wù)進行合并。
[0022]較佳的,所述依據(jù)執(zhí)行時間將同類型的任務(wù)合并具體包括:
[0023]將執(zhí)行時間在預(yù)設(shè)時長內(nèi)、數(shù)量在預(yù)設(shè)數(shù)值內(nèi)的同類型任務(wù)進行合并。
[0024]較佳的,所述將執(zhí)行時間在預(yù)設(shè)時長內(nèi)、數(shù)量在預(yù)設(shè)數(shù)值內(nèi)的同類型任務(wù)進行合并,通過資源適配器調(diào)用資源執(zhí)行合并的任務(wù)具體包括:
[0025]當經(jīng)過時間到達預(yù)設(shè)時長或待處理的同類型任務(wù)的數(shù)量到達預(yù)設(shè)數(shù)值時,將待處理的同類型任務(wù)進行合并,通過資源適配器調(diào)用資源執(zhí)行合并的任務(wù)。
[0026]較佳的,所述依據(jù)任務(wù)執(zhí)行順序向任務(wù)處理器發(fā)送執(zhí)行指示具體包括:
[0027]當執(zhí)行順序在先的任務(wù)完成后,向跟在所述完成的任務(wù)之后執(zhí)行的任務(wù)所在的任務(wù)處理器發(fā)送處理該之后執(zhí)行的任務(wù)的執(zhí)行指示。
[0028]較佳的,所述將執(zhí)行結(jié)果反饋給事務(wù)協(xié)調(diào)器具體包括:
[0029]對于合并處理中合并的每個任務(wù),將合并后處理的結(jié)果作為所述任務(wù)對應(yīng)的事務(wù)的所述任務(wù)的執(zhí)行結(jié)果反饋給事務(wù)協(xié)調(diào)器。
[0030]本發(fā)明還公開了一種處理分布式事務(wù)的裝置,所述裝置包括:事務(wù)管理器、事務(wù)協(xié)調(diào)器、多個任務(wù)處理器、資源適配器;
[0031]所述事務(wù)管理器,用于依據(jù)應(yīng)用啟動事務(wù);
[0032]所述事務(wù)協(xié)調(diào)器,用于將事務(wù)拆分為多個任務(wù),將各個事務(wù)的同類型的任務(wù)分配給同一個任務(wù)處理器,依據(jù)任務(wù)執(zhí)行順序向相應(yīng)的任務(wù)處理器發(fā)送執(zhí)行指示;還用于依據(jù)任務(wù)處理器反饋的執(zhí)行結(jié)果,通知事務(wù)管理器結(jié)束事務(wù)或調(diào)用任務(wù)處理器回滾已經(jīng)執(zhí)行的任務(wù),并在回滾完成后通知所述事務(wù)管理器結(jié)束事務(wù);
[0033]所述任務(wù)處理器,用于對于接收到的執(zhí)行指示對應(yīng)的任務(wù),依據(jù)執(zhí)行時間將同類型的任務(wù)合并,通過資源適配器調(diào)用資源執(zhí)行合并的任務(wù),并將執(zhí)行結(jié)果反饋給事務(wù)協(xié)調(diào)器;
[0034]所述資源適配器,用于調(diào)用資源。
[0035]較佳的,所述事務(wù)協(xié)調(diào)器在依據(jù)反饋的執(zhí)行結(jié)果,通知事務(wù)管理器結(jié)束事務(wù)或調(diào)用任務(wù)處理器回滾已經(jīng)執(zhí)行的任務(wù)時具體用于對于每個事務(wù),在所述事務(wù)的所有任務(wù)的執(zhí)行結(jié)果都為成功時,通知事務(wù)管理器結(jié)束所述事務(wù),在所述事務(wù)的任何一個任務(wù)的執(zhí)行結(jié)果為失敗時,調(diào)用任務(wù)處理器回滾該事務(wù)已經(jīng)執(zhí)行的任務(wù)。
[0036]本發(fā)明實施例的有益效果是:通過將多個同類型的事務(wù)的同類型任務(wù)合并后,統(tǒng)一調(diào)用資源進行處理,能夠提高整體性能,提高整體效率,并減少交互次數(shù),降低并發(fā)沖突的可能。
【專利附圖】

【附圖說明】
[0037]圖1為本發(fā)明處理分布式事務(wù)的方法的流程圖;
[0038]圖2為本發(fā)明處理分布式事務(wù)的方法一【具體實施方式】的流程圖;
[0039]圖3為本發(fā)明處理分布式事務(wù)的方法另一【具體實施方式】的流程圖;
[0040]圖4為本發(fā)明處理分布式事務(wù)的方法實施例的流程圖;
[0041]圖5為本發(fā)明處理分布式事務(wù)的裝置的結(jié)構(gòu)圖;
[0042]圖6為本發(fā)明處理分布式事務(wù)的裝置的實施例的示意圖。
【具體實施方式】
[0043]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。
[0044]參見圖1,為本發(fā)明處理分布式事務(wù)的方法的流程。
[0045]所述方法包括如下步驟。
[0046]步驟S100,事務(wù)管理器依據(jù)應(yīng)用啟動事務(wù)。
[0047]步驟S200,事務(wù)協(xié)調(diào)器將事務(wù)拆分為多個任務(wù),將各個事務(wù)的同類型的任務(wù)分配給同一個任務(wù)處理器,并依據(jù)任務(wù)執(zhí)行順序向相應(yīng)任務(wù)處理器發(fā)送執(zhí)行指示。
[0048]步驟S300,任務(wù)處理器對于接收到的執(zhí)行指示對應(yīng)的任務(wù),依據(jù)執(zhí)行時間將同類型的任務(wù)合并,通過資源適配器調(diào)用資源執(zhí)行合并的任務(wù),并將執(zhí)行結(jié)果反饋給事務(wù)協(xié)調(diào)器。
[0049]步驟S400,事務(wù)協(xié)調(diào)器依據(jù)反饋的執(zhí)行結(jié)果,通知事務(wù)管理器結(jié)束事務(wù),或調(diào)用任務(wù)處理器回滾已經(jīng)執(zhí)行的任務(wù),并在回滾完成后通知事務(wù)管理器結(jié)束事務(wù)。
[0050]在一較佳的實施方式中,所述依據(jù)反饋的執(zhí)行結(jié)果,通知事務(wù)管理器結(jié)束事務(wù),或調(diào)用任務(wù)處理器回滾已經(jīng)執(zhí)行的任務(wù)具體包括:對于每個事務(wù),在所述事務(wù)的所有任務(wù)的執(zhí)行結(jié)果都為成功時,通知事務(wù)管理器結(jié)束所述事務(wù),在所述事務(wù)的任何一個任務(wù)的執(zhí)行結(jié)果為失敗時,調(diào)用任務(wù)處理器回滾該事務(wù)已經(jīng)執(zhí)行的任務(wù)。
[0051]采取該方法,保證分布式處理過程中數(shù)據(jù)的一致性。[0052]在一較佳的實施方式中,所述任務(wù)處理器通過資源適配器調(diào)用資源執(zhí)行分配的任務(wù)具體包括:任務(wù)處理器調(diào)用資源適配器,資源適配器調(diào)用資源程序使用資源執(zhí)行分配的任務(wù)。
[0053]所述一較佳的實施方式如圖2所示,將預(yù)設(shè)時長范圍內(nèi)的預(yù)設(shè)數(shù)量內(nèi)的任務(wù)進行合并,進而提高多個同類型事務(wù)的整體執(zhí)行效率。該實施方式包括如下步驟。
[0054]步驟S210,事務(wù)管理器依據(jù)應(yīng)用啟動事務(wù)。
[0055]步驟S220,事務(wù)協(xié)調(diào)器將事務(wù)拆分為多個任務(wù),將各個事務(wù)的同類型的任務(wù)分配給同一個任務(wù)處理器,當執(zhí)行順序在先的任務(wù)完成后,向跟在該完成的任務(wù)之后執(zhí)行的任務(wù)所在的任務(wù)處理器,發(fā)送處理該之后執(zhí)行的任務(wù)的執(zhí)行指示。
[0056]步驟S230,任務(wù)處理器對于接收到的執(zhí)行指示對應(yīng)的任務(wù),將執(zhí)行時間在預(yù)設(shè)時長內(nèi)、數(shù)量在預(yù)設(shè)數(shù)值內(nèi)的同類型任務(wù)進行合并,通過資源適配器調(diào)用資源執(zhí)行合并的任務(wù),并將執(zhí)行結(jié)果反饋給事務(wù)協(xié)調(diào)器。
[0057]所述將執(zhí)行時間在預(yù)設(shè)時長內(nèi)、數(shù)量在預(yù)設(shè)數(shù)值內(nèi)的同類型任務(wù)進行合并,通過資源適配器處理合并的任務(wù)具體包括:當經(jīng)過時間到達預(yù)設(shè)時長或待處理的同類型任務(wù)的數(shù)量到達預(yù)設(shè)數(shù)值時,將待處理的同類型任務(wù)進行合并,通過資源適配器對合并的任務(wù)進行處理。
[0058]所述將執(zhí)行結(jié)果反饋給事務(wù)協(xié)調(diào)器具體包括:對于合并處理中合并的每個任務(wù),將合并后處理的結(jié)果作為該任務(wù)對應(yīng)的事務(wù)的該任務(wù)的執(zhí)行結(jié)果反饋給事務(wù)協(xié)調(diào)器。
[0059]在此種操作下,合并處理中一個任務(wù)失敗,導(dǎo)致合并處理的任務(wù)對應(yīng)的事務(wù)的任務(wù)回滾,因此在該種操作下,本發(fā)明適合在任務(wù)執(zhí)行失敗概率較低的系統(tǒng)中使用。
[0060]步驟S240,事務(wù)協(xié)調(diào)器依據(jù)反饋的執(zhí)行結(jié)果,通知事務(wù)管理器結(jié)束事務(wù),或調(diào)用任務(wù)處理器回滾已經(jīng)執(zhí)行的任務(wù),并在回滾完成后通知所述事務(wù)管理器結(jié)束事務(wù)。
[0061]在一較佳的實施方式中,當進行回滾時對同類型的任務(wù)進行合并后回滾,以提高整體的執(zhí)行效率。
[0062]步驟S310,事務(wù)管理器依據(jù)應(yīng)用啟動事務(wù)。
[0063]步驟S320,事務(wù)協(xié)調(diào)器將事務(wù)拆分為多個任務(wù),將各個事務(wù)的同類型的任務(wù)分配給同一個任務(wù)處理器,并依據(jù)任務(wù)執(zhí)行順序向相應(yīng)任務(wù)處理器發(fā)送執(zhí)行指示。
[0064]步驟S330,任務(wù)處理器對于接收到的執(zhí)行指示對應(yīng)的任務(wù),依據(jù)執(zhí)行時間將同類型的任務(wù)合并,通過資源適配器調(diào)用資源執(zhí)行合并的任務(wù),并將執(zhí)行結(jié)果反饋給事務(wù)協(xié)調(diào)器。
[0065]舉例而言,依據(jù)執(zhí)行時間將同類型的任務(wù)合并具體包括:將多個數(shù)據(jù)包合并為一個數(shù)據(jù)包后進行處理。
[0066]例如,一個網(wǎng)絡(luò)傳輸包的包頭為2個字節(jié),包體為8個字節(jié),那么這個包的網(wǎng)絡(luò)傳輸?shù)男适?/(2+8) =80%。
[0067]采用合并處理的方式后,將100個網(wǎng)絡(luò)傳輸包合并發(fā)送,網(wǎng)絡(luò)傳輸效率就是8X100/(8X100+2)=99.75%。
[0068]舉例而言,所述依據(jù)執(zhí)行時間將同類型的任務(wù)合并具體包括:將多個插入操作合并為一個批量插入操作。
[0069]例如,執(zhí)行1000次的數(shù)據(jù)庫插入(insert)操作,和將這1000條紀錄合并執(zhí)行一次批量插入(bulk insert)的操作,性能相差近百倍。[0070]步驟S340,事務(wù)協(xié)調(diào)器對于每個事務(wù),在事務(wù)的所有任務(wù)的執(zhí)行結(jié)果都為成功時,執(zhí)行步驟S360,在所述事務(wù)的任務(wù)的執(zhí)行結(jié)果中存在失敗時,調(diào)用任務(wù)處理器回滾所述事務(wù)已經(jīng)執(zhí)行的任務(wù),執(zhí)行步驟S350。
[0071]步驟S350,任務(wù)處理器接收到事務(wù)協(xié)調(diào)器的回滾指示后,根據(jù)回滾時間將待回滾的同類型任務(wù)進行合并,通過資源適配器對合并的任務(wù)進行回滾,將回滾結(jié)果通知事務(wù)協(xié)調(diào)器。
[0072]具體而言,當經(jīng)過時間到達預(yù)設(shè)時長或待回滾的同類型任務(wù)的數(shù)量到達預(yù)設(shè)數(shù)值時,將待回滾的同類型任務(wù)進行合并,通過資源適配器對合并的任務(wù)進行處理。
[0073]步驟S360,事務(wù)協(xié)調(diào)器通知事務(wù)管理器結(jié)束所述事務(wù)。
[0074]事務(wù)協(xié)調(diào)器在通知中會告知事務(wù)執(zhí)行為成功或失敗。
[0075]在該【具體實施方式】中,針對事務(wù)對相關(guān)資源的鎖的并發(fā)沖突,采用合并處理的方式,將多個相同類型的任務(wù)合并處理,減少了交互次數(shù),降低了鎖并發(fā)沖突的可能。
[0076]實施例
[0077]本發(fā)明中應(yīng)用為一具體的應(yīng)用程序,在應(yīng)用程序中事務(wù)定義如下。
[0078]
Public class MvTransaction extends Transaction {
Public void InitQ

I
Int unit I Id = addWorkUnit(new WorkUnitl ());
Int unit2Id = addWorkUnit(new WorkUnit2(),uni111d);
Int unit3Id = addWorkUnit(new WorkUnit3(),uni111d);

}

}
[0079]表該事務(wù)由二個任務(wù)組成,任務(wù)I先執(zhí)行,任務(wù)2和任務(wù)3待任務(wù)I執(zhí)行成功之后執(zhí)行。并且,需要處理多個該種類型任務(wù)。
[0080]步驟S401,應(yīng)用程序發(fā)起一個分布式事務(wù)的調(diào)用。
[0081]步驟S402,事務(wù)管理器依據(jù)定義啟動一個事務(wù),并傳送給事務(wù)協(xié)調(diào)器。
[0082]步驟S403,事務(wù)協(xié)調(diào)器按照事務(wù)的定義,將該事務(wù)拆分成多個任務(wù)。
[0083]步驟S404,事務(wù)協(xié)調(diào)器將拆分的多個任務(wù)分配給不同的任務(wù)處理器,并依據(jù)任務(wù)執(zhí)行順序向相應(yīng)任務(wù)處理器發(fā)送執(zhí)行指示。
[0084]步驟S405,任務(wù)處理器將接收多個指示對應(yīng)的多個事務(wù)的同類型的任務(wù)合并。
[0085]步驟S406,任務(wù)處理器調(diào)用資源適配器執(zhí)行合并的任務(wù)。
[0086]步驟S407,資源適配器調(diào)用資源管理程序處理合并的任務(wù)。
[0087]步驟S408,資源管理程序?qū)⑻幚淼慕Y(jié)果返回給資源適配器。
[0088]步驟S409,資源適配器將處理的結(jié)果返回給任務(wù)處理器。
[0089]步驟S410,任務(wù)處理器對于合并處理中合并的每個任務(wù),將合并后處理的結(jié)果作為該任務(wù)對應(yīng)的事務(wù)的該任務(wù)的執(zhí)行結(jié)果反饋給事務(wù)協(xié)調(diào)器。
[0090]步驟S411,事務(wù)協(xié)調(diào)器對于每個事務(wù),在所述事務(wù)的所有任務(wù)的執(zhí)行結(jié)果都為成功時,執(zhí)行步驟S412,否則,執(zhí)行步驟S413。
[0091]步驟S412,事務(wù)協(xié)調(diào)器向事務(wù)管理器回復(fù)執(zhí)行成功,事務(wù)管理器執(zhí)行步驟S421。
[0092]步驟S413,事務(wù)協(xié)調(diào)器對于每個事務(wù),在事務(wù)的任何一個任務(wù)的執(zhí)行結(jié)果為失敗時,調(diào)用任務(wù)處理器回滾已經(jīng)執(zhí)行的該事務(wù)的任務(wù)。
[0093]步驟S414,任務(wù)處理器將接收的待回滾的任務(wù)合并。
[0094]步驟S415,任務(wù)處理器調(diào)用資源適配器,回滾合并的任務(wù)。
[0095]步驟S416,資源適配器調(diào)用資源管理程序,執(zhí)行回滾操作。
[0096]步驟S417,資源管理程序回滾執(zhí)行結(jié)束后返回回滾結(jié)果。
[0097]步驟S418,資源適配器將回滾結(jié)果返回給任務(wù)處理器。
[0098]步驟S419,任務(wù)處理器將回滾結(jié)果返回給事務(wù)協(xié)調(diào)器。
[0099]步驟S420,事務(wù)協(xié)調(diào)器依據(jù)回滾結(jié)果向事務(wù)管理器返回操作失敗。
[0100]如果回滾失敗,則紀錄日志,需要人工干預(yù)。
[0101]步驟S421,事務(wù)管理器依據(jù)事務(wù)協(xié)調(diào)器的回復(fù),回復(fù)應(yīng)用程序。
[0102]一種處理分布式事務(wù)的裝置如圖5所示,所述裝置包括:事務(wù)管理器100、事務(wù)協(xié)調(diào)器200、多個任務(wù)處理器300、資源適配器400。
[0103]所述事務(wù)管理器100,用于依據(jù)應(yīng)用啟動事務(wù);
[0104]所述事務(wù)協(xié)調(diào)器200,用于將事務(wù)拆分為多個任務(wù),將各個事務(wù)的同類型的任務(wù)分配給同一個任務(wù)處理器300,并依據(jù)任務(wù)執(zhí)行順序向相應(yīng)任務(wù)處理器300發(fā)送執(zhí)行指示;還用于依據(jù)任務(wù)處理器300反饋的執(zhí)行結(jié)果,通知事務(wù)管理器結(jié)束事務(wù),或調(diào)用任務(wù)處理器回滾已經(jīng)執(zhí)行的任務(wù),并在回滾完成后通知所述事務(wù)管理器結(jié)束事務(wù);
[0105]所述任務(wù)處理器300,用于對于接收到的執(zhí)行指示對應(yīng)的任務(wù),依據(jù)執(zhí)行時間將同類型的任務(wù)合并,通過資源適配器400調(diào)用資源執(zhí)行分配的任務(wù),并將執(zhí)行結(jié)果反饋給事務(wù)協(xié)調(diào)器;
[0106]所述資源適配器400,用于調(diào)用資源。
[0107]其中,所述事務(wù)協(xié)調(diào)器200在依據(jù)反饋的執(zhí)行結(jié)果,通知事務(wù)管理器結(jié)束事務(wù)或調(diào)用任務(wù)處理器300回滾已經(jīng)執(zhí)行的任務(wù)時具體用于對于每個事務(wù),在所述事務(wù)的所有任務(wù)的執(zhí)行結(jié)果都為成功時,通知事務(wù)管理器結(jié)束所述事務(wù),在所述事務(wù)的任何一個任務(wù)的執(zhí)行結(jié)果為失敗時,調(diào)用任務(wù)處理器300回滾該事務(wù)已經(jīng)執(zhí)行的任務(wù)。
[0108]在一較佳的實施方式中,所述任務(wù)處理器300還用于在任務(wù)處理器300接收到回滾指示后,根據(jù)回滾時間將待回滾的同類型任務(wù)進行合并,通過資源適配器400對合并的任務(wù)進行回滾。
[0109]在一較佳的實施方式中,所述任務(wù)處理器300具體用于將執(zhí)行時間在預(yù)設(shè)時長內(nèi)的同類型任務(wù)進行合并。
[0110]在一較佳的實施方式中,所述任務(wù)處理器300具體用于將執(zhí)行時間在預(yù)設(shè)時長內(nèi)的數(shù)量在預(yù)設(shè)數(shù)值內(nèi)的同類型任務(wù)進行合并。
[0111]其中,所述將執(zhí)行時間在預(yù)設(shè)時長內(nèi)的數(shù)量在預(yù)設(shè)數(shù)值內(nèi)的同類型任務(wù)進行合并,通過資源適配器執(zhí)行合并的任務(wù)具體包括:當經(jīng)過時間到達預(yù)設(shè)時長或待處理的同類型任務(wù)的數(shù)量到達預(yù)設(shè)數(shù)值時,將待處理的同類型任務(wù)進行合并,通過資源適配器調(diào)用資源執(zhí)行合并的任務(wù)。
[0112]在一較佳的實施方式中,所述事務(wù)協(xié)調(diào)器200在依據(jù)任務(wù)執(zhí)行順序向任務(wù)處理器300發(fā)送執(zhí)行指示時具體用于:當執(zhí)行順序在先的任務(wù)完成后,向跟在所述完成的任務(wù)之后執(zhí)行的任務(wù)所在的任務(wù)處理器300發(fā)送處理該之后執(zhí)行的任務(wù)的執(zhí)行指示。
[0113]在一較佳的實施方式中,所述任務(wù)處理器300在將執(zhí)行結(jié)果反饋給事務(wù)協(xié)調(diào)器200時具體用于:對于合并處理中合并的每個任務(wù),將合并后處理的結(jié)果作為該任務(wù)對應(yīng)的事務(wù)的該任務(wù)的執(zhí)行結(jié)果反饋給事務(wù)協(xié)調(diào)器200。
[0114]本發(fā)明一種處理分布式事務(wù)的裝置200A的實施例如圖6所示。
[0115]應(yīng)用程序100A中定義事務(wù)。
[0116]事務(wù)管理器100用于定義一個事務(wù)中所包含的任務(wù),以及接收應(yīng)用程序的調(diào)用啟動事務(wù),和根據(jù)事務(wù)協(xié)調(diào)器200的反饋停止事務(wù)。
[0117]事務(wù)協(xié)調(diào)器200用于將事務(wù)管理器100開始執(zhí)行的事務(wù)拆分成多個任務(wù),并將該些任務(wù)分配給任務(wù)處理器300進行處理。
[0118]事務(wù)協(xié)調(diào)器200還用于如果一個事務(wù)的所有任務(wù)都成功,通知事務(wù)管理器100結(jié)束事務(wù)。如果一個事務(wù)的所有任務(wù)中存在至少一個失敗,則執(zhí)行回滾,回滾完成后結(jié)束本事務(wù)?;貪L為整個事務(wù)的回滾,一個事務(wù)中已經(jīng)執(zhí)行的任務(wù)回滾,沒執(zhí)行的任務(wù)不用執(zhí)行回滾。
[0119]事務(wù)協(xié)調(diào)器200相當于XA中的交易中間件。
[0120]任務(wù)處理器300用于處理完某個任務(wù)之后,將反饋結(jié)果給事務(wù)協(xié)調(diào)器200。
[0121]任務(wù)處理器300負責處理某個事務(wù)中拆分出來的某個特定任務(wù),任務(wù)處理器300針對多個事務(wù)中相同類型的任務(wù)進行合并,比如將100條Insert語句合并成Bulk Insert執(zhí)行,有效提高了數(shù)據(jù)庫執(zhí)行的效率,并減少了鎖沖突的可能;或者將100次網(wǎng)絡(luò)調(diào)用合并成I次網(wǎng)絡(luò)調(diào)用,提高網(wǎng)絡(luò)傳輸效率。
[0122]任務(wù)處理器300批量執(zhí)行任務(wù),執(zhí)行具體任務(wù),該模塊被剝離出來,能夠合并執(zhí)行,提聞性能。
[0123]任務(wù)處理器300既能處理任務(wù)的提交,也能處理任務(wù)的回滾。當回滾時,對于合并處理,將合并處理進行回滾。
[0124]資源適配器400是分布式系統(tǒng)與外部資源的通信管道組件,比如數(shù)據(jù)庫驅(qū)動組件或者調(diào)用遠程服務(wù)的RPC調(diào)用組件等。
[0125]與現(xiàn)有技術(shù)的通信資源管理器差不多,主要目的在于支持對不同資源的使用。例如可以支持Mysql數(shù)據(jù)庫也可以支持Oracle數(shù)據(jù)庫,也可以支持一個服務(wù)。
[0126]資源管理程序300A為分布式事務(wù)需要調(diào)用的某個資源,可以是數(shù)據(jù)庫管理系統(tǒng)比如Oracle、Sql Server、Mysql等,也可以是某個服務(wù)或其他資源。
[0127]以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進等,均包含在本發(fā)明的保護范圍內(nèi)。
【權(quán)利要求】
1.一種處理分布式事務(wù)的方法,其特征在于,所述方法包括: 事務(wù)管理器依據(jù)應(yīng)用啟動事務(wù); 事務(wù)協(xié)調(diào)器將事務(wù)拆分為多個任務(wù),將各個事務(wù)的同類型的任務(wù)分配給同一個任務(wù)處理器,并依據(jù)任務(wù)執(zhí)行順序向相應(yīng)任務(wù)處理器發(fā)送執(zhí)行指示; 任務(wù)處理器對于接收到的執(zhí)行指示對應(yīng)的任務(wù),依據(jù)執(zhí)行時間將同類型的任務(wù)合并,通過資源適配器調(diào)用資源執(zhí)行合并的任務(wù),并將執(zhí)行結(jié)果反饋給事務(wù)協(xié)調(diào)器; 事務(wù)協(xié)調(diào)器依據(jù)反饋的執(zhí)行結(jié)果,通知事務(wù)管理器結(jié)束事務(wù),或調(diào)用任務(wù)處理器回滾已經(jīng)執(zhí)行的任務(wù),并在回滾完成后通知事務(wù)管理器結(jié)束事務(wù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述依據(jù)反饋的執(zhí)行結(jié)果,通知事務(wù)管理器結(jié)束事務(wù),或調(diào)用任務(wù)處理器回滾已經(jīng)執(zhí)行的任務(wù)具體包括: 對于每個事務(wù),在所述事務(wù)的所有任務(wù)的執(zhí)行結(jié)果都為成功時,通知事務(wù)管理器結(jié)束所述事務(wù),在所述事務(wù)的任何一個任務(wù)的執(zhí)行結(jié)果為失敗時,調(diào)用任務(wù)處理器回滾該事務(wù)已經(jīng)執(zhí)行的任務(wù)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于, 在所述事務(wù)協(xié)調(diào)器調(diào)用任務(wù)處理器回滾已經(jīng)執(zhí)行的任務(wù)后還包括: 任務(wù)處理器接收到事務(wù)協(xié)調(diào)器發(fā)送的回滾指示后,根據(jù)回滾時間將待回滾的同類型任務(wù)進行合并,通過資源適配器對合并的任務(wù)進行回滾。`
4.根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述依據(jù)執(zhí)行時間將同類型的任務(wù)合并具體包括: 將執(zhí)行時間在預(yù)設(shè)時長內(nèi)的同類型任務(wù)進行合并。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述依據(jù)執(zhí)行時間將同類型的任務(wù)合并具體包括: 將執(zhí)行時間在預(yù)設(shè)時長內(nèi)、數(shù)量在預(yù)設(shè)數(shù)值內(nèi)的同類型任務(wù)進行合并。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于, 所述將執(zhí)行時間在預(yù)設(shè)時長內(nèi)、數(shù)量在預(yù)設(shè)數(shù)值內(nèi)的同類型任務(wù)進行合并,通過資源適配器調(diào)用資源執(zhí)行合并的任務(wù)具體包括: 當經(jīng)過時間到達預(yù)設(shè)時長或待處理的同類型任務(wù)的數(shù)量到達預(yù)設(shè)數(shù)值時,將待處理的同類型任務(wù)進行合并,通過資源適配器調(diào)用資源執(zhí)行合并的任務(wù)。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述依據(jù)任務(wù)執(zhí)行順序向任務(wù)處理器發(fā)送執(zhí)行指示具體包括: 當執(zhí)行順序在先的任務(wù)完成后,向跟在所述完成的任務(wù)之后執(zhí)行的任務(wù)所在的任務(wù)處理器發(fā)送處理該之后執(zhí)行的任務(wù)的執(zhí)行指示。
8.根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述將執(zhí)行結(jié)果反饋給事務(wù)協(xié)調(diào)器具體包括: 對于合并處理中合并的每個任務(wù),將合并后處理的結(jié)果作為所述任務(wù)對應(yīng)的事務(wù)的所述任務(wù)的執(zhí)行結(jié)果反饋給事務(wù)協(xié)調(diào)器。
9.一種處理分布式事務(wù)的裝置,其特征在于,所述裝置包括:事務(wù)管理器、事務(wù)協(xié)調(diào)器、多個任務(wù)處理器、資源適配器;所述事務(wù)管理器,用于依據(jù)應(yīng)用啟動事務(wù); 所述事務(wù)協(xié)調(diào)器,用于將事務(wù)拆分為多個任務(wù),將各個事務(wù)的同類型的任務(wù)分配給同一個任務(wù)處理器,依據(jù)任務(wù)執(zhí)行順序向相應(yīng)的任務(wù)處理器發(fā)送執(zhí)行指示;還用于依據(jù)任務(wù)處理器反饋的執(zhí)行結(jié)果,通知事務(wù)管理器結(jié)束事務(wù)或調(diào)用任務(wù)處理器回滾已經(jīng)執(zhí)行的任務(wù),并在回滾完成后通知所述事務(wù)管理器結(jié)束事務(wù); 所述任務(wù)處理器,用于對于接收到的執(zhí)行指示對應(yīng)的任務(wù),依據(jù)執(zhí)行時間將同類型的任務(wù)合并,通過資源適配器調(diào)用資源執(zhí)行合并的任務(wù),并將執(zhí)行結(jié)果反饋給事務(wù)協(xié)調(diào)器; 所述資源適配器,用于調(diào)用資源。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于, 所述事務(wù)協(xié)調(diào)器在依據(jù)反饋的執(zhí)行結(jié)果,通知事務(wù)管理器結(jié)束事務(wù)或調(diào)用任務(wù)處理器回滾已經(jīng)執(zhí)行的任務(wù)時具體用于對于每個事務(wù),在所述事務(wù)的所有任務(wù)的執(zhí)行結(jié)果都為成功時,通知事務(wù)管理器結(jié)束所述事務(wù),在所述事務(wù)的任何一個任務(wù)的執(zhí)行結(jié)果為失敗時,調(diào)用任務(wù)處理器回滾該事務(wù)已經(jīng)執(zhí)行的任務(wù)。
【文檔編號】G06F9/46GK103514028SQ201210198935
【公開日】2014年1月15日 申請日期:2012年6月14日 優(yōu)先權(quán)日:2012年6月14日
【發(fā)明者】李春雷 申請人:北京新媒傳信科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
克拉玛依市| 墨脱县| 定结县| 新密市| 富阳市| 贵州省| 清水河县| 龙海市| 衡南县| 新乡县| 淮阳县| 堆龙德庆县| 新干县| 长海县| 开化县| 诸城市| 金平| 卓资县| 介休市| 山阴县| 静宁县| 聊城市| 林口县| 上饶县| 承德县| 梧州市| 离岛区| 裕民县| 庄河市| 乌鲁木齐市| 四平市| 东丰县| 昂仁县| 泸溪县| 宿松县| 万盛区| 察哈| 怀宁县| 上高县| 安福县| 木兰县|