專(zhuān)利名稱(chēng):用于為工作單元提供原子性的方法、系統(tǒng)和計(jì)算機(jī)程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及 一 種用于為工作單元提供原子性的方法、系統(tǒng)和計(jì) 算機(jī)程序。
背景技術(shù):
在事務(wù)處理領(lǐng)域中,通常要求工作單元具備ACID性質(zhì)。ACID 是代表四種工作單元性質(zhì)的首字母縮寫(xiě)詞原子性、 一致性、隔離 性和耐久性。原子性要求務(wù)必使工作單元的所有操作都發(fā)生或者務(wù) 必使工作單元的操作無(wú)一發(fā)生。 一致性要求工作單元保持它所操作 的數(shù)據(jù)的 一 致性。隔離性要求工作單元不得讀取另 一 事務(wù)的中間結(jié) 果。耐久性要求使被提交(commit)的工作單元的結(jié)果持久并且即 使在系統(tǒng)故障的情況下仍然能夠確保其它ACID屬性。然而,用以 保證這些性質(zhì)的職責(zé)落在不同部件上。例如,如果工作單元是事務(wù), 則事務(wù)協(xié)調(diào)器提供原子性,應(yīng)用提供一致性,資源管理器提供隔離 性和耐久性。另外,在一些工作單元中,并非所有這樣的性質(zhì)都會(huì) 得到遵循,例如對(duì)于作為長(zhǎng)期運(yùn)行(延展)的事務(wù)并且包括數(shù)個(gè)事 務(wù)的工作單元而言沒(méi)有遵循隔離性。例如, 一種公知和理解的工作單元是事務(wù),而事務(wù)協(xié)調(diào)器或者 中間件的作用在于提供原子性。由此,例如如果應(yīng)用在事務(wù)中涉及 到兩個(gè)操作并隨后請(qǐng)求事務(wù)協(xié)調(diào)器提交該事務(wù),則事務(wù)協(xié)調(diào)器必須 保證兩個(gè)操作均提交(成功)。可選地,如果該應(yīng)用請(qǐng)求事務(wù)協(xié)調(diào) 器收回(back out)事務(wù),則事務(wù)協(xié)調(diào)器必須保證兩個(gè)操作均被收回 (失敗)。提供原子性的主要問(wèn)題是即使在事務(wù)協(xié)調(diào)器執(zhí)行于其上的系 統(tǒng)發(fā)生故障的情況下仍然必須確保原子性。例如,如果事務(wù)涉及到 兩個(gè)操作并隨后進(jìn)行提交,則系統(tǒng)可能在事務(wù)協(xié)調(diào)器已經(jīng)提交第一 操作之后、但是在尚未提交第二操作之前發(fā)生故障。結(jié)果,當(dāng)系統(tǒng) 重啟時(shí),事務(wù)協(xié)調(diào)器必須保證第二操作也提交。為了提供這一功能, 事務(wù)協(xié)調(diào)器有必要維護(hù)經(jīng)歷了系統(tǒng)故障而留存下來(lái)的并且記錄各事 務(wù)的進(jìn)度的非易失性日志。例如,事務(wù)協(xié)調(diào)器將在該日志中維護(hù)對(duì) 各事務(wù)中涉及到的操作以及該事務(wù)的進(jìn)度狀態(tài)的順序記錄。另外, 在事務(wù)中的某些點(diǎn),在事務(wù)協(xié)調(diào)器保證日志記錄已經(jīng)被寫(xiě)到非易失 性存儲(chǔ)器的同時(shí)必須保持該事務(wù)。然而,寫(xiě)入日志是耗費(fèi)時(shí)間的。發(fā)明內(nèi)容根據(jù)第 一方面,提供一種用于為涉及到多個(gè)參與器的工作單元提供原子性的方法,該方法包括以下步驟將預(yù)備請(qǐng)求發(fā)送到至少 一個(gè)參與器,其中該請(qǐng)求包括為了恢復(fù)工作單元而需要的數(shù)據(jù);以及在恢復(fù)工作單元時(shí),恢復(fù)工作單元,包括從至少一個(gè)參與器獲 得數(shù)據(jù);以及使用獲得的數(shù)據(jù)來(lái)恢復(fù)和保留工作單元的原子性。優(yōu)選地,數(shù)據(jù)包括如下細(xì)節(jié),根據(jù)該細(xì)節(jié)能夠確定工作單元的 結(jié)果。更優(yōu)選地,該數(shù)據(jù)包括工作單元中其它參與器的列表。更優(yōu) 選地,向預(yù)備請(qǐng)求被發(fā)送到的最后參與器發(fā)送的數(shù)據(jù)包括提交工作 單元的結(jié)果的指示。在優(yōu)選實(shí)施例中,恢復(fù)工作單元的步驟還包括響應(yīng)于獲得的 數(shù)據(jù)包含提交工作單元的結(jié)果的指示,將提交請(qǐng)求發(fā)送到至少 一 個(gè) 參與器。優(yōu)選地,該方法還包括以下步驟將遺忘請(qǐng)求發(fā)送到至少 一個(gè)參與器。更優(yōu)選地,從至少一個(gè)參與器獲得數(shù)據(jù)的步驟包括 將對(duì)數(shù)據(jù)的請(qǐng)求發(fā)送到至少一個(gè)參與器。更優(yōu)選地,從至少一個(gè)參 與器獲得數(shù)據(jù)的步驟包括從至少一個(gè)參與器接收消息,該消息包 括數(shù)據(jù)。根據(jù)第二方面,提供一種用于參與工作單元的方法,該方法包 括以下步驟從工作單元的協(xié)調(diào)器接收預(yù)備請(qǐng)求,該預(yù)備請(qǐng)求包括 代表協(xié)調(diào)器進(jìn)行存儲(chǔ)的數(shù)據(jù);以及處理預(yù)備請(qǐng)求,該處理步驟包括以下步驟確定能夠完成更新;在非易失性存儲(chǔ)器中存儲(chǔ)數(shù)據(jù);以 及對(duì)預(yù)備請(qǐng)求做出響應(yīng),該響應(yīng)包括能夠完成更新這一指示。優(yōu)選地,該方法還包括以下步驟從協(xié)調(diào)器接收對(duì)數(shù)據(jù)的請(qǐng)求; 以及響應(yīng)于接收到請(qǐng)求,將數(shù)據(jù)提供給協(xié)調(diào)器。更優(yōu)選地,該方法 還包括以下步驟將數(shù)據(jù)發(fā)送到協(xié)調(diào)器。更優(yōu)選地,發(fā)送數(shù)據(jù)的步 驟對(duì)確定與協(xié)調(diào)器失去聯(lián)系做出響應(yīng)。根據(jù)第三方面,提供一種用于為涉及到多個(gè)參與器的工作單元 提供原子性的協(xié)調(diào)器,該協(xié)調(diào)器包括用于將預(yù)備請(qǐng)求發(fā)送到至少 一個(gè)參與器的裝置,其中該請(qǐng)求包括為了恢復(fù)工作單元而需要的數(shù)據(jù);以及用于在恢復(fù)工作單元時(shí)恢復(fù)工作單元的裝置,包括用于 從至少 一個(gè)參與器獲得數(shù)據(jù)的裝置;以及用于使用獲得的數(shù)據(jù)來(lái)恢 復(fù)和保留工作單元的原子性的裝置。根據(jù)第四方面,提供一種用于參與工作單元的參與器,該參與 器包括用于從工作單元的協(xié)調(diào)器接收預(yù)備請(qǐng)求的裝置,該預(yù)備請(qǐng) 求包括代表協(xié)調(diào)器進(jìn)行存儲(chǔ)的數(shù)據(jù);以及用于處理預(yù)備請(qǐng)求的裝置, 包括用于確定能夠完成更新的裝置;用于存儲(chǔ)數(shù)據(jù)的非易失性存 儲(chǔ)器;以及用于對(duì)預(yù)備請(qǐng)求做出響應(yīng)的裝置,該響應(yīng)包括能夠完成 更新這一指示根據(jù)第五方面和第六方面,提供如下計(jì)算機(jī)程序,這些計(jì)算機(jī) 程序包括當(dāng)所述程序運(yùn)行于計(jì)算機(jī)上時(shí)適于執(zhí)行上述方法的所有步 驟的程序代碼裝置。根據(jù)第七方面,提供一種用于解決涉及到多個(gè)參與器的工作單 元的方法,該方法包括以下步驟多個(gè)參與器中的各參與器獲得與 多個(gè)參與器中的各其它參與器相關(guān)聯(lián)的標(biāo)識(shí)符數(shù)據(jù);多個(gè)參與器中 的各參與器從多個(gè)參與器中的各其它參與器獲得包括與工作單元相 關(guān)聯(lián)的狀態(tài)的第 一消息;以及至少 一個(gè)參與器使用接收的第 一消息 來(lái)恢復(fù)工作單元。根據(jù)第八方面,提供一種用于解決涉及到多個(gè)參與器的工作單 元的系統(tǒng),該系統(tǒng)包括用于使多個(gè)參與器中的各參與器獲得與多
個(gè)參與器中的各其它參與器相關(guān)聯(lián)的標(biāo)識(shí)符數(shù)據(jù)的裝置;用于使多 個(gè)參與器中的各參與器從多個(gè)參與器中的各其它參與器獲得包括與 工作單元相關(guān)聯(lián)的狀態(tài)的第 一消息的裝置;以及用于使至少一個(gè)參 與器使用接收的第一消息來(lái)恢復(fù)工作單元的裝置。根據(jù)第九方面,提供一種用于解決涉及到多個(gè)參與器的工作單 元的參與器,該參與器包括用于獲得與多個(gè)參與器中的各其它參 與器相關(guān)聯(lián)的標(biāo)識(shí)符數(shù)據(jù)的裝置;用于從多個(gè)參與器中的各其它參 與器獲得包括與工作單元相關(guān)聯(lián)的狀態(tài)的第 一消息的裝置;以及用 于使用接收的第 一 消息來(lái)恢復(fù)工作單元的裝置。根據(jù)第十方面,提供一種計(jì)算機(jī)程序,該計(jì)算機(jī)程序包括當(dāng)所裝置。 ^ 、 、' 、 ' ^ 、、—
現(xiàn)在將參照如以下附圖中所示的本發(fā)明優(yōu)選實(shí)施例,僅通過(guò)例 子來(lái)描述本發(fā)明圖1是本發(fā)明可以實(shí)施于其中的系統(tǒng)的框圖;圖2是根據(jù)現(xiàn)有技術(shù)在事務(wù)中涉及到的部件以及在這些部件之 間的流程的示意圖;圖3是根據(jù)本發(fā)明第一實(shí)施例在事務(wù)中涉及到的部件以及在這 些部件之間的流程的示意圖;圖4是根據(jù)本發(fā)明第二實(shí)施例在事務(wù)中涉及到的部件以及在這 些部件之間的流程的示意圖;圖5是事務(wù)系統(tǒng)的框圖;圖6是根據(jù)優(yōu)選實(shí)施例的事務(wù)系統(tǒng)的框圖;圖7是根據(jù)優(yōu)選實(shí)施例在事務(wù)中涉及到的部件以及在這些部件 之間的流程的示意圖;以及圖8是根據(jù)優(yōu)選實(shí)施例在事務(wù)解決中涉及到的部件以及在這些 部件之間的流程的示意圖。
具體實(shí)施方式
根據(jù)優(yōu)選實(shí)施例,所選工作單元是事務(wù)。圖l是本發(fā)明能夠?qū)嵤┯谄渲械南到y(tǒng)(100)的框圖。圖1示出了包括所擁有的應(yīng)用(110) 的第一數(shù)據(jù)處理系統(tǒng)(105)、包括用于執(zhí)行事務(wù)的事務(wù)協(xié)調(diào)器(120) 的第二數(shù)據(jù)處理系統(tǒng)(115)、包括參與器1即第一資源(例如數(shù)據(jù) 庫(kù))的第三數(shù)據(jù)處理系統(tǒng)(130)和包括參與器2即第二資源(例如 數(shù)據(jù)庫(kù))的第四數(shù)據(jù)處理系統(tǒng)(135)。該系統(tǒng)(100)也包括日志(125),事務(wù)協(xié)調(diào)器(120)、參與器1和參與器2能夠向該日志 寫(xiě)入具有與事務(wù)相關(guān)聯(lián)的數(shù)據(jù)的一個(gè)或者多個(gè)日志記錄。應(yīng)當(dāng)理解,事務(wù)中涉及到的部件(即所擁有的應(yīng)用(110)、 事務(wù)協(xié)調(diào)器(120)、參與器1和參與器2)能夠駐留于任何數(shù)據(jù)處 理系統(tǒng)上,并且這些部件能夠全部駐留于同 一數(shù)據(jù)處理系統(tǒng)上。圖2是根據(jù)現(xiàn)有技術(shù)依照兩階段提交協(xié)議在示例性事務(wù)中涉及 到的部件以及在這些部件之間涉及到的流程的示意圖。首先,應(yīng)用(110)將開(kāi)始請(qǐng)求(200)傳送到事務(wù)協(xié)調(diào)器(120),該請(qǐng)求表明 事務(wù)的開(kāi)始。接著,應(yīng)用(100)將更新請(qǐng)求(205 )(也就是對(duì)參 與器進(jìn)行改變的請(qǐng)求)發(fā)送到參與器1。響應(yīng)于接收到更新請(qǐng)求,參 與器1向事務(wù)協(xié)調(diào)器(120)注冊(cè)(210)為參與事務(wù)的參與器并且 在響應(yīng)中接收該事務(wù)的事務(wù)標(biāo)識(shí)符。接著,應(yīng)用將更新請(qǐng)求(215) 發(fā)送到參與器2。響應(yīng)于接收到更新請(qǐng)求,參與器2向事務(wù)協(xié)調(diào)器(120)注冊(cè)(220 )為參與事務(wù)的參與器并且在響應(yīng)中接收該事務(wù) 的事務(wù)標(biāo)識(shí)符。響應(yīng)于參與器1和參與器2成功地執(zhí)行更新請(qǐng)求,應(yīng)用(110) 將提交請(qǐng)求(225 )發(fā)送到事務(wù)協(xié)調(diào)器(120)。直至提交處理完成 后,應(yīng)用(110)才重新獲得控制。響應(yīng)于來(lái)自應(yīng)用(110)的提交請(qǐng)求(225 ),事務(wù)協(xié)調(diào)器(120) 將第一 日志記錄強(qiáng)制寫(xiě)入(230 )到日志(125 ),其中第一 日志記 錄包括與事務(wù)相關(guān)聯(lián)的標(biāo)識(shí)符、與參與器1相關(guān)聯(lián)的標(biāo)識(shí)符以及與 參與器2相關(guān)聯(lián)的標(biāo)識(shí)符。參與器1不具有與參與器2相關(guān)聯(lián)的數(shù) 據(jù)并且反之亦然。由此,只有事務(wù)協(xié)調(diào)器才具有與參與事務(wù)的參與 器相關(guān)聯(lián)的數(shù)據(jù)。注意到直至所寫(xiě)數(shù)據(jù)被固定存儲(chǔ)到非易失性存儲(chǔ) 器后,強(qiáng)制寫(xiě)入才返回。接著, 一旦強(qiáng)制的日志寫(xiě)入完成(確保數(shù)據(jù)存儲(chǔ)于非易失性存 儲(chǔ)器中),事務(wù)協(xié)調(diào)器(120)就將預(yù)備請(qǐng)求(235 )傳送到參與器1。 應(yīng)當(dāng)理解,參與器在參與到事務(wù)中之后在它接收預(yù)備請(qǐng)求之前采用 回滾(rollback)。換而言之,如果參與器在參與到事務(wù)中之后而在 接收預(yù)備請(qǐng)求之前選擇針對(duì)事務(wù)采取單方面動(dòng)作,則它應(yīng)當(dāng)回滾與 事務(wù)相關(guān)聯(lián)的更新。響應(yīng)于接收到預(yù)備請(qǐng)求,參與器1將第二日志記錄強(qiáng)制寫(xiě)入 (240 )到日志,其中第二日志記錄包括響應(yīng)于注冊(cè)請(qǐng)求而接收的事 務(wù)標(biāo)識(shí)符以及與事務(wù)相關(guān)聯(lián)的狀態(tài)即"待定(in doubt)"。這一狀態(tài) 表明參與器1再也不能采用回滾而是需要等待被通知事務(wù)結(jié)果。接 著,參與器1將提交表決(245 )(即對(duì)預(yù)備請(qǐng)求的響應(yīng))傳送到事 務(wù)協(xié)調(diào)器(120),該提交表決表明參與器1能夠成功地參與事務(wù)。 應(yīng)當(dāng)理解,如果參與器1不能成功地參與事務(wù),則它應(yīng)當(dāng)收回它所 執(zhí)行的任何更新并且表決為"回滾"而不寫(xiě)入日志記錄。接著,事務(wù)協(xié)調(diào)器(120)將預(yù)備請(qǐng)求(250 )傳送到參與器2。 響應(yīng)于接收到預(yù)備請(qǐng)求,參與器2將第三日志記錄強(qiáng)制寫(xiě)入(255 ) 到曰志,其中第三日志記錄包括事務(wù)標(biāo)識(shí)符以及與事務(wù)相關(guān)聯(lián)的狀 態(tài)即"待定"。這一狀態(tài)表明參與器2再也不能采用回滾而是需要等 待被通知事務(wù)結(jié)果。接著,參與器2將提交表決(260)(即響應(yīng)) 傳送到事務(wù)協(xié)調(diào)器(120),該提交表決表明參與器2能夠成功地參 與事務(wù)。應(yīng)當(dāng)理解,如果參與器2不能成功地參與事務(wù),則它應(yīng)當(dāng) 收回它所執(zhí)行的任何更新并且表決為"回滾"而不寫(xiě)入日志記錄。事務(wù)協(xié)調(diào)器(120)收集所有表決,但是收集的表決不被硬存 儲(chǔ)于日志(125)中。接著,事務(wù)協(xié)調(diào)器(120)將第四日志記錄強(qiáng) 制寫(xiě)入(265 )到日志,其中第四日志記錄包括事務(wù)標(biāo)識(shí)符以及與事 務(wù)相關(guān)聯(lián)的計(jì)算結(jié)果。假設(shè)所有參與器的表決為"提交",則決定 為"提交,,。如果一個(gè)或者多個(gè)參與器的表決為"回滾",則決定 為"回滾"。接著,事務(wù)協(xié)調(diào)器(120)將提交請(qǐng)求(270)傳送到參與器1 而將提交請(qǐng)求(275 )傳送到參與器2,這些請(qǐng)求向參與器表明它們 應(yīng)當(dāng)提交事務(wù)。在已經(jīng)提交事務(wù)之后,參與器"遺忘"該事務(wù),使得 與參與器相關(guān)聯(lián)的日志記錄符合清除條件。在第一例子中,在事務(wù)協(xié)調(diào)器(120)在第一日志記錄被寫(xiě)入 之后、但是在預(yù)備請(qǐng)求(235 )被發(fā)送到參與器1之前發(fā)生故障的情 況下,在重啟時(shí),事務(wù)協(xié)調(diào)器(120)讀取日志(125)以確定日志 (125)中記錄的事務(wù)的最后成功狀態(tài)。在該第一例子中,事務(wù)協(xié)調(diào) 器(120)所記錄的第一 日志記錄被讀取并且包括與事務(wù)標(biāo)識(shí)符、參 與器1的標(biāo)識(shí)符和參與器2的標(biāo)識(shí)符相關(guān)聯(lián)的數(shù)據(jù)。根據(jù)日志(125) 中的數(shù)據(jù),事務(wù)協(xié)調(diào)器(120)確定接收到對(duì)提交事務(wù)的請(qǐng)求、但是 尚未收集來(lái)自所有參與器的表決。結(jié)果,得知參與器尚未被提交, 而為了保證事務(wù)的原子性,將回滾請(qǐng)求發(fā)送到各參與器。因而確保了事務(wù)的原子性。在第二例子中,如果事務(wù)協(xié)調(diào)器(120)在從參與器1接收提交表決(245 )之后發(fā)生故障,則在重啟時(shí),事務(wù)協(xié)調(diào)器(120)讀 取日志(125)以確定日志(125)中記錄的事務(wù)的最后成功狀態(tài)。 在該第二例子中,事務(wù)協(xié)調(diào)器(120)所記錄的第一日志記錄被讀取 并且包括與事務(wù)標(biāo)識(shí)符、參與器1的標(biāo)識(shí)符和參與器2的標(biāo)識(shí)符相 關(guān)聯(lián)的數(shù)據(jù)。根據(jù)日志(125)中的數(shù)據(jù),事務(wù)協(xié)調(diào)器(120)確定 從應(yīng)用(110)接收到對(duì)提交事務(wù)的請(qǐng)求、但是尚未收集來(lái)自所有參 與器的表決。結(jié)果,得知參與器尚未被提交,而為了保證事務(wù)的原 子性,將回滾請(qǐng)求發(fā)送到各參與器。因而確保了事務(wù)的原子性。在第三例子中,如果事務(wù)協(xié)調(diào)器(120)在提交請(qǐng)求被發(fā)送到 參與器l之后發(fā)生故障,則在重啟時(shí),事務(wù)協(xié)調(diào)器(120)讀取曰志 (125)以確定日志(125)中記錄的事務(wù)的最后成功狀態(tài)。事務(wù)協(xié)調(diào)器(120)所記錄的第四日志被讀取并且包括與事務(wù)標(biāo)識(shí)符相關(guān)聯(lián) 的數(shù)據(jù)以及與事務(wù)相關(guān)聯(lián)的計(jì)算結(jié)果(即"提交,,)。根據(jù)此數(shù)據(jù),事務(wù)協(xié)調(diào)器(120)確定各參與器的表決為"提交"并且提交結(jié)果被 計(jì)算過(guò)、但是不能確定提交是否傳送到了任意參與器。結(jié)果,事務(wù) 協(xié)調(diào)器將提交請(qǐng)求(270, 275 )發(fā)送到參與器1和參與器2。因而保 證了事務(wù)的原子性。注意到在現(xiàn)有技術(shù)的流程中,事務(wù)協(xié)調(diào)器兩次對(duì)它的日志進(jìn)行 強(qiáng)制操作第一次是對(duì)事務(wù)標(biāo)識(shí)符和參與器數(shù)據(jù)進(jìn)行記錄,而第二 次是對(duì)事務(wù)標(biāo)識(shí)符以及與事務(wù)相關(guān)聯(lián)的計(jì)算結(jié)果進(jìn)行記錄。雖然錄 入此數(shù)據(jù)會(huì)實(shí)現(xiàn)原子性,但不利的是,事務(wù)協(xié)調(diào)器寫(xiě)入日志會(huì)耗費(fèi) 時(shí)間。還注意到參照?qǐng)D2描述的事務(wù)是兩階段提交事務(wù)的例子。本領(lǐng) 域技術(shù)人員將認(rèn)識(shí)到有很多可能的變型,例如事務(wù)可以包含任何數(shù) 目的參與器并且一個(gè)或者多個(gè)參與器可以不執(zhí)行更新。圖3是根據(jù)本發(fā)明第一實(shí)施例在圖2的示例性兩階段提交事務(wù) 中涉及到的部件以及在這些部件之間涉及到的流程的示意圖。在該 第一實(shí)施例中,由于與結(jié)果的指示相關(guān)聯(lián)的數(shù)據(jù)隨預(yù)備請(qǐng)求一起傳 送,所以減少了事務(wù)協(xié)調(diào)器(120)所執(zhí)行的日志寫(xiě)入的次數(shù)。首先,應(yīng)用(110)將開(kāi)始請(qǐng)求(300 )傳送到事務(wù)協(xié)調(diào)器(120), 該請(qǐng)求表明事務(wù)的開(kāi)始。接著,應(yīng)用(100)將更新請(qǐng)求(305 )(也 就是對(duì)參與器進(jìn)行改變的請(qǐng)求)發(fā)送到參與器1。響應(yīng)于接收到更新 請(qǐng)求,參與器1向事務(wù)協(xié)調(diào)器(120)注冊(cè)(310)為參與事務(wù)的參 與器。接著,應(yīng)用將更新請(qǐng)求(315)發(fā)送到參與器2。響應(yīng)于接收 到更新請(qǐng)求,參與器2向事務(wù)協(xié)調(diào)器(120)注冊(cè)(320 )為參與事 務(wù)的參與器。響應(yīng)于參與器1和參與器2成功地執(zhí)行更新請(qǐng)求,應(yīng)用(110) 將提交請(qǐng)求(325 )發(fā)送到事務(wù)協(xié)調(diào)器(120)。響應(yīng)于來(lái)自應(yīng)用(110) 的提交請(qǐng)求(325 ),事務(wù)將第一日志記錄強(qiáng)制寫(xiě)入(330 )到日志 (125),其中第一日志記錄包括與事務(wù)相關(guān)聯(lián)的標(biāo)識(shí)符、與參與器
1相關(guān)聯(lián)的標(biāo)識(shí)符以及與參與器2相關(guān)聯(lián)的標(biāo)識(shí)符。
接著, 一旦強(qiáng)制的日志寫(xiě)入完成,事務(wù)協(xié)調(diào)器(120)就將預(yù) 備請(qǐng)求(335 )傳送到參與器1。該預(yù)備請(qǐng)求包括數(shù)據(jù),即"回滾" 這一結(jié)果指示。響應(yīng)于接收到預(yù)備請(qǐng)求和關(guān)聯(lián)數(shù)據(jù),參與器1將第 二曰志記錄寫(xiě)入(340 )到日志,其中第二日志記錄包括事務(wù)標(biāo)識(shí)符 以及"回滾,,指示。接著,參與器l將提交表決(345 )(即響應(yīng))傳 送到事務(wù)協(xié)調(diào)器(120),該提交表決表明參與器1能夠成功地參與 事務(wù)。
接著,事務(wù)協(xié)調(diào)器(120)將預(yù)備請(qǐng)求(350 )傳送到參與器2。 該預(yù)備請(qǐng)求包括數(shù)據(jù),即"提交"指示。響應(yīng)于接收到預(yù)備請(qǐng)求和關(guān) 聯(lián)數(shù)據(jù),參與器2將第三日志記錄寫(xiě)入(355 )到日志,其中第三日 志記錄包括事務(wù)標(biāo)識(shí)符以及提交結(jié)果。接著,參與器2將提交表決 (360 )(即響應(yīng))傳送到事務(wù)協(xié)調(diào)器(120),該提交表決表明參 與器2能夠成功地參與事務(wù)。
一旦事務(wù)協(xié)調(diào)器(120)已經(jīng)收集了所有表決,事務(wù)協(xié)調(diào)器(120) 就能夠有利地立即將與計(jì)算結(jié)果相關(guān)聯(lián)的請(qǐng)求傳送到參與器而無(wú)需 對(duì)計(jì)算結(jié)果進(jìn)行日志寫(xiě)入,這是因?yàn)閰⑴c器本身會(huì)維護(hù)與結(jié)果相關(guān) 聯(lián)的數(shù)據(jù)。由此,事務(wù)協(xié)調(diào)器(120)將提交請(qǐng)求(365 )傳送到參 與器1而將提交請(qǐng)求(370 )傳送到參與器2,這些請(qǐng)求向參與器表 明它們應(yīng)當(dāng)提交事務(wù)。
在第四例子中,在事務(wù)協(xié)調(diào)器(120)在寫(xiě)入第一日志記錄之 后、但是在預(yù)備請(qǐng)求(335 )被發(fā)送到參與器l之前發(fā)生故障的情況 下,在重啟時(shí),事務(wù)協(xié)調(diào)器(120)讀耳又第一日志記錄并且確定從應(yīng) 用(110)接收到對(duì)提交事務(wù)的請(qǐng)求、但是沒(méi)有完成該事務(wù)。結(jié)果,
的請(qǐng)求,使得事務(wù)協(xié)調(diào)器(120)能夠確定日志(125)中記錄的事 務(wù)的最后成功狀態(tài)。在該第四例子中,參與器1和參與器2進(jìn)行答 復(fù)從而表明它們不具有日志記錄。由此,事務(wù)協(xié)調(diào)器(120)確定尚 無(wú)任何預(yù)備被傳送到參與器或者所有參與器都已經(jīng)完成。結(jié)果,事
務(wù)協(xié)調(diào)器(120)將回滾傳送到各參與器,這使得各參與器回滾或者
如果各參與器已經(jīng)完成則沒(méi)有影響。因而保證了事務(wù)的原子性。
在第五例子中,如果事務(wù)協(xié)調(diào)器(120)在從參與器1接收提 交表決(345 )之后發(fā)生故障,則在重啟時(shí),事務(wù)協(xié)調(diào)器(120)讀 取第一 日志記錄并且確定從應(yīng)用(110)接收到對(duì)提交事務(wù)的請(qǐng)求、 但是沒(méi)有完成該事務(wù)。結(jié)果,事務(wù)協(xié)調(diào)器(120)向各參與器發(fā)送對(duì) 接收它們已經(jīng)錄入的任何數(shù)據(jù)的請(qǐng)求,使得事務(wù)協(xié)調(diào)器(120)能夠 確定日志(125)中記錄的事務(wù)的最后成功狀態(tài)。在該第五例子中, 參與器1利用第二日志記錄中的數(shù)據(jù)也就是事務(wù)標(biāo)識(shí)符和"回滾,,指 示進(jìn)行答復(fù)。參與器2發(fā)送表明它不具有日志記錄的答復(fù)。
事務(wù)協(xié)調(diào)器(120)確定由于沒(méi)有參與器具有"提交"這一結(jié) 果指示的日志記錄,所以沒(méi)有參與器被提交,并且結(jié)果是將回滾傳 送到各參與器。因而保證了事務(wù)的原子性。
在第六例子中,如果事務(wù)協(xié)調(diào)器(120)在提交請(qǐng)求被發(fā)送到 參與器l之后發(fā)生故障,則在重啟時(shí),事務(wù)協(xié)調(diào)器(120)向各參與 器發(fā)送對(duì)接收它們已經(jīng)錄入的任何數(shù)據(jù)的請(qǐng)求,使得事務(wù)協(xié)調(diào)器
(120)能夠確定日志(125)中記錄的事務(wù)的最后成功狀態(tài)。在該 第六例子中,由于參與器1已經(jīng)遺忘該事務(wù)為提交請(qǐng)求的一部分, 所以參與器1發(fā)送表明它不了解該事務(wù)的答復(fù)。參與器2利用第三 曰志記錄中的數(shù)據(jù)也就是事務(wù)標(biāo)識(shí)符和"提交"指示進(jìn)行答復(fù)?,F(xiàn)在, 事務(wù)協(xié)調(diào)器(120)能夠確定由于最后的參與器(即參與器2)已 經(jīng)發(fā)回所指示的提交結(jié)果,所以計(jì)算結(jié)果被提交過(guò)。事務(wù)協(xié)調(diào)器
(120)也能夠確定由于參與器1已經(jīng)遺忘該事務(wù)為提交請(qǐng)求的一 部分,所以提交請(qǐng)求被發(fā)送到了參與器1。由此,事務(wù)協(xié)調(diào)器(120) 立即將提交請(qǐng)求(370 )傳送到參與器2。因而保證了事務(wù)的原子性。 然而也注意到如果事務(wù)協(xié)調(diào)器也將提交傳送到參與器1 ,則盡管該提 交將被拒絕,但是由于參與器1的更新已被提交,所以事務(wù)的原子 性并不受損。
有利地,在本發(fā)明的第一實(shí)施例中,對(duì)于參與事務(wù)的參與器,
與對(duì)可能結(jié)果的指示相關(guān)聯(lián)的數(shù)據(jù)隨預(yù)備請(qǐng)求一起傳送,這一指示 被"回滾,,到除預(yù)備所傳送到的最后參與器(對(duì)于該參與器而言該指 示為"提交,,)以外的所有參與器。由此,事務(wù)協(xié)調(diào)器無(wú)需錄入任何 與事務(wù)的結(jié)果相關(guān)聯(lián)的數(shù)據(jù),這是因?yàn)樵诎l(fā)生故障時(shí),事務(wù)協(xié)調(diào)器 能夠從參與器本身恢復(fù)數(shù)據(jù)以便重建事務(wù)。如果沒(méi)有參與器已經(jīng)錄 入"提交"指示,則回滾事務(wù)。注意到包含"回滾"指示是可選的,這是 因?yàn)榫褪聞?wù)而言的回滾結(jié)果能夠根據(jù)有無(wú)"提交"指示來(lái)確定。
優(yōu)選地,在預(yù)備過(guò)程中具有"提交"指示的參與器是最后一個(gè)要 提交的參與器。可選地,參與器能夠錄入這一指示作為處理提交請(qǐng) 求的一部分,在該情況下它將需要保留該指示直至事務(wù)協(xié)調(diào)器告知 它遺忘該指示。
注意到作為對(duì)"回滾,,和/或"提交,,的替代,可以使用事務(wù)協(xié)調(diào)器 能夠從中推斷事務(wù)結(jié)果的任何指示。例如,這些指示可以是不同的 字符串、數(shù)字值或者二進(jìn)制值。
注意到如果參與器在對(duì)預(yù)備的響應(yīng)中表決為"回滾",則它能 夠遺忘事務(wù)。
圖4是根據(jù)本發(fā)明第二實(shí)施例在圖2的示例性事務(wù)中涉及到的 部件以及在這些部件之間涉及到的流程的示意圖。在第二實(shí)施例中, 事務(wù)協(xié)調(diào)器(120)無(wú)需維護(hù)日志,這是因?yàn)榕c參與器相關(guān)聯(lián)的數(shù)據(jù) 隨預(yù)備請(qǐng)求一起傳送。有利地,這使得不再需要該事務(wù)協(xié)調(diào)器具有 對(duì)日志文件的訪問(wèn)權(quán)限。
首先,應(yīng)用(110)將開(kāi)始請(qǐng)求(400)傳送到事務(wù)協(xié)調(diào)器(120), 該請(qǐng)求表明了事務(wù)的開(kāi)始。接著,應(yīng)用(110)將更新請(qǐng)求(405 ) 發(fā)送到參與器1。響應(yīng)于接收到更新請(qǐng)求,參與器1 (410)向事務(wù) 協(xié)調(diào)器(120)注冊(cè)(410)為參與事務(wù)的參與器。接著,應(yīng)用將更 新請(qǐng)求(415)發(fā)送到參與器2。響應(yīng)于接收到更新請(qǐng)求,參與器2 向事務(wù)協(xié)調(diào)器(120)注冊(cè)(420 )為參與事務(wù)的參與器。響應(yīng)于參 與器1和參與器2成功地執(zhí)行更新請(qǐng)求,應(yīng)用(110)將提交請(qǐng)求(425 ) 發(fā)送到事務(wù)協(xié)調(diào)器(120)。
響應(yīng)于來(lái)自應(yīng)用(110)的提交請(qǐng)求(425 ),事務(wù)協(xié)調(diào)器(120) 將預(yù)備請(qǐng)求(430 )傳送到參與器1。該預(yù)備請(qǐng)求包括數(shù)據(jù),即與事 務(wù)相關(guān)聯(lián)的標(biāo)識(shí)符以及與參與事務(wù)的各其它參與器(在這一例子中 為參與器2)相關(guān)聯(lián)的標(biāo)識(shí)符。響應(yīng)于接收到預(yù)備請(qǐng)求和關(guān)聯(lián)數(shù)據(jù),參與器1將第一日志記錄 寫(xiě)入(435 )到日志,其中第一日志記錄包括事務(wù)標(biāo)識(shí)符、與事務(wù)相 關(guān)聯(lián)的狀態(tài)即"待定"以及參與器2的標(biāo)識(shí)符。接著,參與器1將提 交表決(440 )(即響應(yīng))傳送到事務(wù)協(xié)調(diào)器(120),該提交表決 表明參與器1能夠成功地參與事務(wù)。
接著,事務(wù)協(xié)調(diào)器(120)將預(yù)備請(qǐng)求(445 )傳送到參與器2。 該預(yù)備請(qǐng)求包括數(shù)據(jù),即與事務(wù)相關(guān)聯(lián)的標(biāo)識(shí)符以及與參與事務(wù)的 各其它參與器(在這一例子中為參與器1 )相關(guān)聯(lián)的標(biāo)識(shí)符。。
響應(yīng)于接收到預(yù)備請(qǐng)求和關(guān)聯(lián)數(shù)據(jù),參與器2將第二日志記錄 寫(xiě)入(450 )到日志,其中第二日志記錄包括事務(wù)標(biāo)識(shí)符、與事務(wù)相 關(guān)聯(lián)的狀態(tài)即"待定"以及參與器1的標(biāo)識(shí)符。接著,參與器2將提 交表決(455 )(即響應(yīng))傳送到事務(wù)協(xié)調(diào)器(120),該提交表決 表明參與器2能夠成功地參與事務(wù)。
一旦事務(wù)協(xié)調(diào)器(120)已經(jīng)收集所有表決,事務(wù)協(xié)調(diào)器(120) 就能夠直接將與計(jì)算結(jié)果相關(guān)聯(lián)的請(qǐng)求傳送到參與器。也就是說(shuō), 事務(wù)協(xié)調(diào)器(120)將提交請(qǐng)求(460)傳送到參與器1而將提交請(qǐng) 求(470)傳送到參與器2,這些請(qǐng)求向參與器表明它們應(yīng)當(dāng)提交事 務(wù)。
響應(yīng)于接收到提交請(qǐng)求,參與器1將第三日志記錄強(qiáng)制寫(xiě)入 (465 )到日志,其中第三日志記錄包括事務(wù)標(biāo)識(shí)符、與事務(wù)相關(guān)聯(lián) 的狀態(tài)即"提交"以及參與器2的標(biāo)識(shí)符。響應(yīng)于接收到提交請(qǐng)求, 參與器2將第四曰志記錄強(qiáng)制寫(xiě)入(475 )到曰志,其中第四曰志記 錄包括事務(wù)標(biāo)識(shí)符、與事務(wù)相關(guān)聯(lián)的狀態(tài)即"提交,,以及參與器1的 標(biāo)識(shí)符。
直至事務(wù)協(xié)調(diào)器聲明遺忘該事務(wù)是可接受的后,參與事務(wù)的參與器才能夠遺忘該事務(wù)。這是因?yàn)槭聞?wù)協(xié)調(diào)器必須保證它能夠從參 與器獲取足夠數(shù)據(jù)以便在事務(wù)協(xié)調(diào)器發(fā)生故障時(shí)重建事務(wù)。由此,在已經(jīng)提交事務(wù)之后,事務(wù)協(xié)調(diào)器(120)將明確的遺忘請(qǐng)求(480) 傳送到參與器1而將明確的遺忘請(qǐng)求(485 )傳送到參與器2?,F(xiàn)在 能夠清除包括參與器數(shù)據(jù)的參與器日志記錄。當(dāng)事務(wù)協(xié)調(diào)器在發(fā)生故障之后重啟時(shí),參與器主動(dòng)地聯(lián)系事務(wù) 協(xié)調(diào)器并且發(fā)送它的日志記錄中的事務(wù)協(xié)調(diào)器數(shù)據(jù)。根據(jù)日志記錄, 事務(wù)協(xié)調(diào)器能夠確定事務(wù)中涉及到的所有其它參與器的標(biāo)識(shí)符,由 此事務(wù)協(xié)調(diào)器能夠聯(lián)系事務(wù)中涉及到的所有其它參與器以從它們的 日志記錄獲取數(shù)據(jù)。例如,參與器能夠基于與協(xié)調(diào)器失去了聯(lián)系來(lái) 決定聯(lián)系事務(wù)協(xié)調(diào)器,其中能夠由于自從它接收預(yù)備請(qǐng)求起預(yù)定時(shí) 間限制已經(jīng)到期而確定與協(xié)調(diào)器失去了聯(lián)系。在第七實(shí)施例中,在事務(wù)協(xié)調(diào)器(120)在預(yù)備請(qǐng)求(330 )被 發(fā)送到參與器1之前發(fā)生故障的情況下,在重啟時(shí),參與事務(wù)的任 何參與器都不聯(lián)系事務(wù)協(xié)調(diào)器(120)。這是因?yàn)楦鲄⑴c器能夠采用 回滾。由此保證了事務(wù)的原子性。在第八例子中,如果事務(wù)協(xié)調(diào)器(120)在從參與器1接收提 交表決(340)之后發(fā)生故障,則在重啟之后,參與器l聯(lián)系事務(wù)協(xié) 調(diào)器(120)并且提供第一日志記錄中的數(shù)據(jù),也就是事務(wù)標(biāo)識(shí)符、 與事務(wù)相關(guān)聯(lián)的狀態(tài)即"待定,,以及參與器2的標(biāo)識(shí)符。由此,根據(jù) 從參與器1接收的數(shù)據(jù),事務(wù)協(xié)調(diào)器(120)現(xiàn)在得知參與器2也參 與到事務(wù)中。由此,事務(wù)協(xié)調(diào)器(120)請(qǐng)求來(lái)自參與器2的狀態(tài), 而參與器2利用表明它不具有日志記錄的指示進(jìn)行答復(fù)并且采用回 滾。事務(wù)協(xié)調(diào)器(120)由此確定參與器沒(méi)有被要求過(guò)進(jìn)行提交,結(jié) 果,將回滾傳送到各參與器。因而保證了事務(wù)的原子性。在第九例子中,如果事務(wù)協(xié)調(diào)器(120)在提交請(qǐng)求被發(fā)送到 參與器l之后發(fā)生故障,則在重啟之后,參與器l聯(lián)系事務(wù)協(xié)調(diào)器 (120)。在這一例子中,參與器l發(fā)送如下數(shù)據(jù),該數(shù)據(jù)包含來(lái)自 第三日志記錄的數(shù)據(jù),即事務(wù)標(biāo)識(shí)符、與事務(wù)相關(guān)聯(lián)的狀態(tài)即"提交"
以及參與器2的標(biāo)識(shí)符。這是因?yàn)槭聞?wù)尚未到達(dá)告知參與器1遺忘 事務(wù)的狀態(tài)。由此,根據(jù)從參與器1接收的數(shù)據(jù),事務(wù)協(xié)調(diào)器(120) 現(xiàn)在得知參與器2也參與到事務(wù)中并且參與器1已經(jīng)被提交。結(jié)果,事務(wù)協(xié)調(diào)器(120)聯(lián)系參與器2。在這一例子中,參與 器2發(fā)送第二日志記錄中的數(shù)據(jù),也就是事務(wù)標(biāo)識(shí)符、與事務(wù)相關(guān) 聯(lián)的狀態(tài)即"待定"以及參與器1的標(biāo)識(shí)符。事務(wù)協(xié)調(diào)器(120)因此 確定參與器2尚未被提交并且將提交傳送到參與器2。因而保證了事 務(wù)的原子性。有利地,參與事務(wù)的參與器錄入與參與該事務(wù)的其它參與器相 關(guān)聯(lián)的參與器數(shù)據(jù)。由此,事務(wù)協(xié)調(diào)器無(wú)需錄入與參與事務(wù)的所有 參與器相關(guān)聯(lián)的任何數(shù)據(jù)。相反,在發(fā)生故障時(shí),事務(wù)協(xié)調(diào)器能夠 從參與器本身恢復(fù)與所有參與器相關(guān)聯(lián)的數(shù)據(jù)。注意到在第二實(shí)施例中,在事務(wù)協(xié)調(diào)器發(fā)生故障之后能夠使用 不同事務(wù)協(xié)調(diào)器來(lái)恢復(fù)事務(wù)。例如,能夠由事務(wù)中涉及到的參與器 之一提供不同的事務(wù)協(xié)調(diào)器功能。注意到作為對(duì)"待定,,和/或"提交,,的替代,可以使用事務(wù)協(xié)調(diào)器 能夠從中推斷事務(wù)狀態(tài)的任何指示。例如,這些指示可以是不同的 字符串、數(shù)字值或者二進(jìn)制值。還注意到有可能對(duì)第一實(shí)施例和第二實(shí)施例進(jìn)行組合。例如, 第一實(shí)施例的預(yù)備請(qǐng)求能夠包括其它參與器的列表。這使得不再需 要事務(wù)協(xié)調(diào)器寫(xiě)入第一日志記錄。注意到在這些例子中參與器例如可以是事務(wù)認(rèn)知數(shù)據(jù)庫(kù) (transaction aware database ),而從應(yīng)用到參與器的更新請(qǐng)求可以是 對(duì)更新數(shù)據(jù)庫(kù)中數(shù)據(jù)的請(qǐng)求。還注意到盡管在例子中參與器和事務(wù)協(xié)調(diào)器均使用同一日志, 但是在實(shí)踐中這些日志可以是不同日志。圖5是事務(wù)系統(tǒng)(500 )的框圖,其中第一數(shù)據(jù)處理系統(tǒng)(505 ) 包括所擁有的應(yīng)用(510),而第二數(shù)據(jù)處理系統(tǒng)(515)包括用于 執(zhí)行事務(wù)的事務(wù)協(xié)調(diào)器(520 )。還示出了包括用于管理第 一 資源(例
如數(shù)據(jù)庫(kù))的第一參與器的第三數(shù)據(jù)處理系統(tǒng)(530)。還示出了包 括用于管理第二資源(例如數(shù)據(jù)庫(kù))的第二參與器的第四數(shù)據(jù)處理 系統(tǒng)(535 )。該系統(tǒng)(500)也包括多個(gè)日志(525、 535和545 ), 其中事務(wù)協(xié)調(diào)器(520 )、第一參與器和第二參與器分別將一個(gè)或者 多個(gè)日志記錄(即其中日志記錄包括與事務(wù)相關(guān)聯(lián)的數(shù)據(jù))寫(xiě)到這 些曰志。應(yīng)當(dāng)理解,事務(wù)中涉及到的部件(即所擁有的應(yīng)用(510)、 事務(wù)協(xié)調(diào)器(520 )、參與器l和參與器2)能夠駐留于任何數(shù)據(jù)處 理系統(tǒng)上,并且這些部件能夠全部駐留于同 一數(shù)據(jù)處理系統(tǒng)上。在發(fā)生與事務(wù)協(xié)調(diào)器和/或參與器執(zhí)行于其上的系統(tǒng)相關(guān)聯(lián)的 故障的情況下,數(shù)據(jù)能夠用來(lái)幫助進(jìn)行恢復(fù)。將認(rèn)識(shí)到這樣的故障 可能涉及斷電,或者硬件設(shè)備故障,該硬件設(shè)備如板上存儲(chǔ)器或者 保持?jǐn)?shù)據(jù)庫(kù)的DASD。如果事務(wù)協(xié)調(diào)器發(fā)生故障,則參與器必須等待直至事務(wù)協(xié)調(diào)器 恢復(fù)并且分析它的日志,以便推進(jìn)事務(wù)。將認(rèn)識(shí)到實(shí)現(xiàn)重啟所花費(fèi) 的時(shí)間對(duì)于任何業(yè)務(wù)都是重要的。例如,如果事務(wù)協(xié)調(diào)器的重啟花 費(fèi)了 一個(gè)小時(shí),則參與器如保險(xiǎn)數(shù)據(jù)庫(kù)在這一小時(shí)內(nèi)不可用并且業(yè) 務(wù)不能進(jìn)行。現(xiàn)在將參照?qǐng)D6和圖7描述優(yōu)選實(shí)施例。圖6是事務(wù)系統(tǒng)(600) 的框圖,其中第一數(shù)據(jù)處理系統(tǒng)(605 )包括所擁有的應(yīng)用(610), 而第二數(shù)據(jù)處理系統(tǒng)(615 )包括用于執(zhí)行事務(wù)的事務(wù)協(xié)調(diào)器(620 )。 還示出了包括用于管理第一資源(例如數(shù)據(jù)庫(kù))的參與器1的第三 數(shù)據(jù)處理系統(tǒng)(630 )。還示出了包括用于管理第二資源(例如數(shù)據(jù) 庫(kù))的參與器2的第四數(shù)據(jù)處理系統(tǒng)(640)。該系統(tǒng)(600)也包 括多個(gè)日志(625、 635和645 ),其中事務(wù)協(xié)調(diào)器(620)、參與器 1和參與器2能夠分別將一個(gè)或者多個(gè)日志記錄(即其中日志記錄包 括與事務(wù)相關(guān)聯(lián)的數(shù)據(jù))寫(xiě)到這些日志。應(yīng)當(dāng)注意,事務(wù)中涉及到的部件(即所擁有的應(yīng)用(610)、事務(wù)協(xié)調(diào)器(620 )、參與器1 和參與器2)能夠駐留于任何數(shù)據(jù)處理系統(tǒng)上,并且這些部件能夠全 部駐留于同 一數(shù)據(jù)處理系統(tǒng)上。在優(yōu)選實(shí)施例的事務(wù)系統(tǒng)(600)中,參與器1和參與器2可 配置用以進(jìn)行通信。圖7是在圖6的事務(wù)系統(tǒng)(600)中涉及到的部件以及在這些 部件之間涉及到的流程的示意圖。應(yīng)用(610)將開(kāi)始請(qǐng)求傳送到事 務(wù)協(xié)調(diào)器(620 ),該請(qǐng)求表明了事務(wù)的開(kāi)始。接著,應(yīng)用(610) 將更新請(qǐng)求發(fā)送到參與器1。響應(yīng)于接收到更新請(qǐng)求,參與器1向事 務(wù)協(xié)調(diào)器(620)注冊(cè)為參與事務(wù)的參與器。接著,應(yīng)用將更新請(qǐng)求 發(fā)送到參與器2。響應(yīng)于接收到更新請(qǐng)求,參與器2向事務(wù)協(xié)調(diào)器 (620 )注冊(cè)為參與事務(wù)的參與器。為求簡(jiǎn)明在圖7中沒(méi)有描繪這些 流程。響應(yīng)于參與器1和參與器2成功地執(zhí)行更新請(qǐng)求,應(yīng)用(610) 將提交請(qǐng)求(700 )發(fā)送到事務(wù)協(xié)調(diào)器(620 )。響應(yīng)于來(lái)自應(yīng)用(610)的提交請(qǐng)求(700),事務(wù)協(xié)調(diào)器(620) 將第一日志記錄強(qiáng)制寫(xiě)入(705 )到日志(625 ),其中第一日志記 錄包括與事務(wù)相關(guān)聯(lián)的標(biāo)識(shí)符、與參與器1相關(guān)聯(lián)的標(biāo)識(shí)符以及與 參與器2相關(guān)聯(lián)的標(biāo)識(shí)符。注意到直至所寫(xiě)數(shù)據(jù)被硬存儲(chǔ)到非易失 性存儲(chǔ)器后,強(qiáng)制寫(xiě)入才返回??蛇x地,能夠應(yīng)用上文公開(kāi)的方法使得事務(wù)協(xié)調(diào)器無(wú)需維護(hù)日接著,一旦強(qiáng)制的日志寫(xiě)入完成(確保數(shù)據(jù)存儲(chǔ)于非易失性存儲(chǔ)器中),事務(wù)協(xié)調(diào)器(620)就將預(yù)備請(qǐng)求(710)傳送到參與器1。 該預(yù)備請(qǐng)求包括數(shù)據(jù),即與事務(wù)相關(guān)聯(lián)的標(biāo)識(shí)符以及包括與參與事 務(wù)的所有參與器(在這一例子中為參與器1和參與器2)相關(guān)聯(lián)的標(biāo) 識(shí)符的列表??蛇x地,該預(yù)備請(qǐng)求包括與參與事務(wù)的各其它參與器 即參與器2相關(guān)聯(lián)的標(biāo)識(shí)符。響應(yīng)于接收到預(yù)備請(qǐng)求和關(guān)聯(lián)數(shù)據(jù),參與器1將第二日志記錄 強(qiáng)制寫(xiě)入(715)到日志(635 ),其中第二日志記錄包括事務(wù)標(biāo)識(shí) 符、與事務(wù)相關(guān)聯(lián)的狀態(tài)即"待定"、參與器1的標(biāo)識(shí)符以及參與器2 的標(biāo)識(shí)符。接著,參與器1將提交表決(720)(即響應(yīng))傳送到事 務(wù)協(xié)調(diào)器(620),該提交表決表明參與器1能夠成功地參與事務(wù)。 接著,事務(wù)協(xié)調(diào)器(620)將預(yù)備請(qǐng)求(725 )傳送到參與器2。 該預(yù)備請(qǐng)求包括數(shù)據(jù),即與事務(wù)相關(guān)聯(lián)的標(biāo)識(shí)符以及包括與參與事 務(wù)的所有參與器(在這一例子中為參與器1和參與器2)相關(guān)聯(lián)的標(biāo) 識(shí)符的列表。響應(yīng)于接收到預(yù)備請(qǐng)求和關(guān)聯(lián)數(shù)據(jù),參與器2將第三日志記錄 強(qiáng)制寫(xiě)入(730 )到日志(645 ),其中第三日志記錄包括事務(wù)標(biāo)識(shí) 符、與事務(wù)相關(guān)聯(lián)的狀態(tài)即"待定"、參與器1的標(biāo)識(shí)符以及參與器2 的標(biāo)識(shí)符。接著,參與器2將提交表決(735 )(即響應(yīng))傳送到事 務(wù)協(xié)調(diào)器(620 ),該提交表決表明參與器2能夠成功地參與事務(wù)。 可選地,該預(yù)備請(qǐng)求包括與參與事務(wù)的各其它參與器即參與器1相 關(guān)聯(lián)的標(biāo)識(shí)符。一旦事務(wù)協(xié)調(diào)器(620 )已經(jīng)收集了所有表決,事務(wù)協(xié)調(diào)器(620 ) 就能夠直接將與計(jì)算結(jié)果相關(guān)聯(lián)的請(qǐng)求傳送到參與器。也就是說(shuō), 事務(wù)協(xié)調(diào)器(620 )將提交請(qǐng)求(745 )傳送到參與器1而將提交請(qǐng) 求(755 )傳送到參與器2,這些請(qǐng)求向參與器表明它們應(yīng)當(dāng)提交事 務(wù)。響應(yīng)于接收到提交請(qǐng)求,參與器1將第四日志記錄強(qiáng)制寫(xiě)入 (750 )到曰志(635 ),其中第四日志記錄包括事務(wù)標(biāo)識(shí)符、與事 務(wù)相關(guān)聯(lián)的狀態(tài)即"提交"以及參與器2的標(biāo)識(shí)符。響應(yīng)于接收到提 交請(qǐng)求,參與器2將第五日志記錄強(qiáng)制寫(xiě)入(760)到日志,其中第 五日志記錄包括事務(wù)標(biāo)識(shí)符、與事務(wù)相關(guān)聯(lián)的狀態(tài)即"提交,,以及參 與器1的標(biāo)識(shí)符。直至事務(wù)協(xié)調(diào)器聲明遺忘該事務(wù)是可接受的后,參與事務(wù)的參 與器才能夠遺忘該事務(wù)。這是因?yàn)槭聞?wù)協(xié)調(diào)器必須保證它能夠從參 與器獲取足夠數(shù)據(jù)以便在事務(wù)協(xié)調(diào)器發(fā)生故障時(shí)重建事務(wù)。由此, 在已經(jīng)提交事務(wù)之后,事務(wù)協(xié)調(diào)器(620)將明確的遺忘請(qǐng)求(780 ) 傳送到參與器1而將明確的遺忘請(qǐng)求(785 )傳送到參與器2?,F(xiàn)在 能夠清除包括參與器數(shù)據(jù)的參與器日志記錄。 現(xiàn)在將參照?qǐng)D6、圖7和圖8描述根據(jù)優(yōu)選實(shí)施例的處理。在 事務(wù)協(xié)調(diào)器(620)發(fā)生故障的情況下,參與器以多種方法中的任何 方法檢測(cè)(步驟800 )故障。在一個(gè)例子中,參與器不能對(duì)"預(yù)備" 命令做出響應(yīng)。在另一例子中,參與器以有規(guī)律的間隔對(duì)"預(yù)備,,命 令做出響應(yīng)直至達(dá)到參與器確定事務(wù)協(xié)調(diào)器已經(jīng)發(fā)生故障的閾值。 在又一例子中,在參與器等待來(lái)自事務(wù)協(xié)調(diào)器的結(jié)果的同時(shí)達(dá)到超 時(shí)值。參照?qǐng)D8,響應(yīng)于參與器1確定(步驟800 )事務(wù)協(xié)調(diào)器(620 ) 已經(jīng)發(fā)生故障,參與器1檢查事務(wù)協(xié)調(diào)器(620 )正在協(xié)調(diào)的事務(wù)的 事務(wù)標(biāo)識(shí)符。參與器1然后比較該事務(wù)的事務(wù)標(biāo)識(shí)符與它的日志 (635 )中的一個(gè)或者多個(gè)日志記錄。響應(yīng)于該比較,參與器l確定 與事務(wù)相關(guān)聯(lián)的狀態(tài)以及與參與事務(wù)的各其它參與器(即參與器2) 相關(guān)聯(lián)的標(biāo)識(shí)符。參與器1將廣播消息發(fā)送(步驟805 )到參與器2。該消息包 括含有事務(wù)標(biāo)識(shí)符的字段以及含有與該事務(wù)相關(guān)聯(lián)的狀態(tài)的字段。優(yōu)選地,該消息包括含有與參與事務(wù)的所有參與器(在這一例子中 為參與器1和參與器2)相關(guān)聯(lián)的標(biāo)識(shí)符的列表。由此,有利地,在 事務(wù)協(xié)調(diào)器在將預(yù)備請(qǐng)求發(fā)送到參與器2之前發(fā)生故障的情況下, 參與器2將從參與器1本身接收參與器1的標(biāo)識(shí)符。優(yōu)選地,參與 器1在預(yù)定時(shí)間閾值內(nèi)等待來(lái)自參與器2的廣播消息。類(lèi)似地,響應(yīng)于參與器2確定(步驟810)事務(wù)協(xié)調(diào)器(620) 已經(jīng)發(fā)生故障,參與器2檢查事務(wù)協(xié)調(diào)器(620)正在協(xié)調(diào)的事務(wù)的 事務(wù)標(biāo)識(shí)符。參與器2然后比較該事務(wù)的事務(wù)標(biāo)識(shí)符與它的日志 (645 )中的一個(gè)或者多個(gè)日志記錄。響應(yīng)于該比較,參與器2確定 與事務(wù)相關(guān)聯(lián)的狀態(tài)以及與參與事務(wù)的各其它參與器(即參與器1 ) 相關(guān)聯(lián)的標(biāo)識(shí)符。參與器2將廣播消息發(fā)送(步驟815)到參與器1。該消息包 括含有事務(wù)標(biāo)識(shí)符的字段以及含有與該事務(wù)相關(guān)聯(lián)的狀態(tài)的字段。優(yōu)選地,該消息也包括含有與參與事務(wù)的所有參與器(在這一例子
中為參與器1和參與器2)相關(guān)聯(lián)的標(biāo)識(shí)符的列表。優(yōu)選地,參與器2在預(yù)定時(shí)間闊值內(nèi)等待來(lái)自參與器1的廣播消息。響應(yīng)于從參與器2接收到廣播消息,參與器l將來(lái)自它的曰志記錄中的與事務(wù)相關(guān)聯(lián)的狀態(tài)和從參與器2接收的與事務(wù)相關(guān)聯(lián)的狀態(tài)相聚集以便解決(步驟820)事務(wù)。響應(yīng)于解決事務(wù),參與器i將日志記錄強(qiáng)制寫(xiě)入(825 )到它的日志(635 ),其中該日志記錄包括事務(wù)標(biāo)識(shí)符、與事務(wù)相關(guān)聯(lián)的 狀態(tài)、參與器1的標(biāo)識(shí)符以及參與器2的標(biāo)識(shí)符。響應(yīng)于從參與器1接收到廣播消息,參與器2將來(lái)自它的日志 記錄中的與事務(wù)相關(guān)聯(lián)的狀態(tài)與從參與器1接收的與事務(wù)相關(guān)聯(lián)的 狀態(tài)相聚集以便解決(步驟830 )事務(wù)。響應(yīng)于解決事務(wù),參與器2將日志記錄強(qiáng)制寫(xiě)入(835 )到它 的曰志(645 ),其中該日志記錄包括事務(wù)標(biāo) 識(shí)符、與事務(wù)相關(guān)!^:的 狀態(tài)、參與器1的標(biāo)識(shí)符以及參與器2的標(biāo)識(shí)符。優(yōu)選地,在事務(wù)協(xié)調(diào)器(620 )重啟時(shí),參與器將它們的日志 記錄傳送到事務(wù)協(xié)調(diào)器(620)。優(yōu)選地,直至事務(wù)協(xié)調(diào)器(620 )重啟并且表明遺忘該事務(wù)是 可接受的后,參與事務(wù)的參與器才能遺忘(步驟840,步驟845 )該 事務(wù)。這是因?yàn)楦鲄⑴c器必須保證它能夠從它的日志以及從各其它 參與器獲取足夠數(shù)據(jù)以便在事務(wù)協(xié)調(diào)器(620 )發(fā)生故障時(shí)重建事務(wù)。 由此,在啟動(dòng)時(shí),參與器將它們的日志記錄傳送到事務(wù)協(xié)調(diào)器(620 )。 在確定已經(jīng)解決事務(wù)時(shí),事務(wù)協(xié)調(diào)器(620)將明確的遺忘請(qǐng)求傳送 到參與器1以及將明確的遺忘請(qǐng)求傳送到參與器2?,F(xiàn)在能夠清除包 括參與器數(shù)據(jù)的參與器日志記錄??蛇x地,直至向各其它參與器發(fā)送確認(rèn)該事務(wù)已經(jīng)被該參與器 解決的消息并且直至從各其它參與器接收到確認(rèn)該事務(wù)已經(jīng)被各其 它參與器解決的消息后,參與事務(wù)的參與器才能遺忘(步驟840,步驟845 )該事務(wù)。由此,優(yōu)選地,在解決事務(wù)(步驟820 )時(shí),參與器l將廣播消息發(fā)送到參與器2。該消息包括含有事務(wù)標(biāo)識(shí)符的字段以及含有與 已解決的事務(wù)相關(guān)聯(lián)的狀態(tài)的字段。優(yōu)選地,參與器2確認(rèn)廣播消 息的接收。另外,優(yōu)選地,在解決事務(wù)(步驟830 )時(shí),參與器2將廣播 消息發(fā)送到參與器1 。該消息包括含有事務(wù)標(biāo)識(shí)符的字段以及含有與 已解決的事務(wù)相關(guān)聯(lián)的狀態(tài)的字段。優(yōu)選地,參與器1確認(rèn)廣播消 息的接收。一旦參與器1已經(jīng)發(fā)送含有與已解決的事務(wù)相關(guān)聯(lián)的狀態(tài)的廣 播消息并且一旦參與器1已經(jīng)從參與器2接收到含有與已解決的狀 態(tài)相關(guān)聯(lián)的狀態(tài)的廣播消息,參與器1就清除它的日志記錄。 一旦 參與器2已經(jīng)發(fā)送含有與已解決的事務(wù)相關(guān)聯(lián)的狀態(tài)的廣播消息并 且一旦參與器2已經(jīng)從參與器1接收含有與已解決的狀態(tài)相關(guān)聯(lián)的 狀態(tài)的廣播消息,參與器2就清除它的日志記錄。在第十例子中,在事務(wù)協(xié)調(diào)器(620 )在預(yù)備請(qǐng)求被發(fā)送到參 與器1之前發(fā)生故障的情況下,參與器不相互聯(lián)系。這是因?yàn)楦鲄?與器能夠采用收回。根據(jù)優(yōu)選實(shí)施例,在第十一例子中,在事務(wù)協(xié)調(diào)器(620 )在 從參與器1接收提交表決之后發(fā)生故障的情況下,響應(yīng)于檢測(cè)到(步 驟800 )事務(wù)協(xié)調(diào)器(620)的故障,參與器1檢查事務(wù)協(xié)調(diào)器(620) 正在協(xié)調(diào)的事務(wù)的事務(wù)標(biāo)識(shí)符(例如T1)。參與器1然后比較該事 務(wù)的事務(wù)標(biāo)識(shí)符與它的日志(635 )中的一個(gè)或者多個(gè)日志記錄。響 應(yīng)于該比較,參與器1確定與事務(wù)相關(guān)聯(lián)的狀態(tài)以及與參與事務(wù)的 各其它參與器(即參與器2)相關(guān)聯(lián)的標(biāo)識(shí)符。參與器l將廣播消息發(fā)送(步驟805 )到參與器2。該消息包 括含有事務(wù)標(biāo)識(shí)符的字段以及含有與該事務(wù)相關(guān)聯(lián)的狀態(tài)的字段。 優(yōu)選地,該消息包括含有與參與事務(wù)的所有參與器(在這一例子中 為參與器1和參與器2)相關(guān)聯(lián)的標(biāo)識(shí)符的列表。下文示出了廣播消 息的例子廣播(T1;待定;參與器l,參與器2) 類(lèi)似地,響應(yīng)于參與器2確定(步驟810)事務(wù)協(xié)調(diào)器(620) 已經(jīng)發(fā)生故障,參與器2檢查事務(wù)協(xié)調(diào)器(620)正在協(xié)調(diào)的事務(wù)的 事務(wù)標(biāo)識(shí)符(即T1)。參與器2然后比較該事務(wù)的事務(wù)標(biāo)識(shí)符與它 的曰志(645 )中的一個(gè)或者多個(gè)日志記錄。響應(yīng)于該比較,參與器 2確定與事務(wù)相關(guān)聯(lián)的狀態(tài)以及與參與事務(wù)的各其它參與器(即參與 器1 )相關(guān)聯(lián)的標(biāo)識(shí)符。響應(yīng)于從參與器l接收到廣播消息,參與器2確定事務(wù)協(xié)調(diào)器 (620 )發(fā)送過(guò)預(yù)備消息到參與器1。在優(yōu)選實(shí)施例中,響應(yīng)于確定發(fā)送過(guò)預(yù)備消息到參與器1,參 與器2預(yù)備并且發(fā)送(步驟815)廣播消息到參與器1。該消息包括 含有事務(wù)標(biāo)識(shí)符的字段以及含有與該事務(wù)相關(guān)聯(lián)的狀態(tài)的字段。優(yōu)選地,該消息包括含有與參與事務(wù)的所有參與器(在這一例子中為 參與器1和參與器2)相關(guān)聯(lián)的標(biāo)識(shí)符的列表。下文示出了廣播消息 的例子廣播(T1;待定;參與器l,參與器2)響應(yīng)于從參與器2接收到廣播消息,參與器1將來(lái)自它的日志 記錄中的與事務(wù)相關(guān)聯(lián)的狀態(tài)(即待定)和從參與器2接收的與事 務(wù)相關(guān)聯(lián)的狀態(tài)(即待定)相聚集以便解決(步驟820 )事務(wù)。在第 十一例子中,參與器1通過(guò)提交來(lái)解決(步驟820 )事務(wù)。響應(yīng)于解決事務(wù),參與器i將日志記錄強(qiáng)制寫(xiě)入(825 )到它 的日志(635 ),其中該日志記錄包括事務(wù)標(biāo)識(shí)符、與事務(wù)相關(guān)聯(lián)的 狀態(tài)、參與器1的標(biāo)識(shí)符以及參與器2的標(biāo)識(shí)符。優(yōu)選地,參與器1將廣播消息發(fā)送到參與器2。該消息包括含 有事務(wù)標(biāo)識(shí)符的字段以及含有與已解決的事務(wù)相關(guān)聯(lián)的狀態(tài)的字 段。優(yōu)選地,參與器2確認(rèn)廣播消息的接收。響應(yīng)于從參與器l接收到廣播消息,參與器2將來(lái)自它的日志 記錄中的與事務(wù)相關(guān)聯(lián)的狀態(tài)(即待定)和從參與器1接收的與事 務(wù)相關(guān)聯(lián)的狀態(tài)(即待定)相聚集以便解決(步驟830 )事務(wù)。在第 十一例子中,參與器2通過(guò)提交來(lái)解決(步驟830)事務(wù)。
響應(yīng)于解決事務(wù),參與器2將日志記錄強(qiáng)制寫(xiě)入(835 )到它 的日志(645 ),其中該日志記錄包括事務(wù)標(biāo)識(shí)符、與事務(wù)相關(guān)聯(lián)的 狀態(tài)、參與器1的標(biāo)識(shí)符以及參與器2的標(biāo)識(shí)符。優(yōu)選地,參與器2將廣播消息發(fā)送到參與器1。該消息包括含 有事務(wù)標(biāo)識(shí)符的字段以及含有與已解決的事務(wù)相關(guān)聯(lián)的狀態(tài)的字 段。優(yōu)選地,參與器1確認(rèn)廣播消息的接收。參與器1和參與器2的日志記錄現(xiàn)在符合清除條件(步驟840 和845 )。可選地,在第十二例子中,在事務(wù)協(xié)調(diào)器(620 )在從參與器1 接收提交表決之后發(fā)生故障的情況下,響應(yīng)于檢測(cè)到(步驟800 )事 務(wù)協(xié)調(diào)器(620)的故障,參與器1檢查事務(wù)協(xié)調(diào)器(620)正在協(xié) 調(diào)的事務(wù)的事務(wù)標(biāo)識(shí)符(例如T2)。參與器1然后比較該事務(wù)的事 務(wù)標(biāo)識(shí)符與它的日志(635 )中的一個(gè)或者多個(gè)日志記錄。響應(yīng)于該 比較,參與器1確定與事務(wù)相關(guān)聯(lián)的狀態(tài)以及與參與事務(wù)的各其它 參與器(即參與器2)相關(guān)聯(lián)的標(biāo)識(shí)符。參與器l將廣播消息發(fā)送(步驟805 )到參與器2。該消息包 括含有事務(wù)標(biāo)識(shí)符的字段以及含有與該事務(wù)相關(guān)聯(lián)的狀態(tài)的字段。 優(yōu)選地,該消息包括含有與參與事務(wù)的所有參與器(在這一例子中 為參與器1和參與器2)相關(guān)聯(lián)的標(biāo)識(shí)符的列表。下文示出了廣播消 息的例子廣播(T2;待定;參與器l,參與器2)類(lèi)似地,響應(yīng)于參與器2確定(步驟810)事務(wù)協(xié)調(diào)器(620) 已經(jīng)發(fā)生故障,參與器2檢查事務(wù)協(xié)調(diào)器(620)正在協(xié)調(diào)的事務(wù)的 事務(wù)標(biāo)識(shí)符(即T2)。參與器2然后比較該事務(wù)的事務(wù)標(biāo)識(shí)符與它 的日志(645 )中的一個(gè)或者多個(gè)日志記錄。響應(yīng)于該比較,參與器 2確定與事務(wù)相關(guān)聯(lián)的狀態(tài)以及與參與事務(wù)的各其它參與器(即參與 器1 )相關(guān)聯(lián)的標(biāo)識(shí)符。應(yīng)當(dāng)注意,由于事務(wù)協(xié)調(diào)器(620)在預(yù)備請(qǐng)求被發(fā)送到參與 器2之前發(fā)生故障,所以參與器2不具有日志記錄并且采用收回。 參與器2將廣播消息發(fā)送(步驟815)到參與器1。該消息包 括含有事務(wù)標(biāo)識(shí)符的字段以及含有與該事務(wù)相關(guān)聯(lián)的狀態(tài)的字段。優(yōu)選地,該消息包括含有與參與事務(wù)的所有參與器(在這一例子中 為參與器1和參與器2)相關(guān)聯(lián)的標(biāo)識(shí)符的列表。下文示出了廣播消 息的例子廣播(T2;收回;參與器l,參與器2)響應(yīng)于從參與器2接收到廣播消息,參與器1將來(lái)自它的日志 記錄中的與事務(wù)相關(guān)聯(lián)的狀態(tài)(即待定)和從參與器2接收的與事 務(wù)相關(guān)聯(lián)的狀態(tài)(即收回)相聚集以便解決(步驟820 )事務(wù)。在第 十二例子中,參與器1通過(guò)收回來(lái)解決(步驟820 )事務(wù)。參與器1無(wú)需寫(xiě)入它的日志,這是因?yàn)閰⑴c器2已經(jīng)解決了事 務(wù)(即參與器2采用了收回)。由此,無(wú)需清除與參與器1和參與 器2相關(guān)聯(lián)的日志記錄。在第十三例子中,在事務(wù)協(xié)調(diào)器(620 )在提交請(qǐng)求被發(fā)送到 參與器1之后發(fā)生故障的情況下,響應(yīng)于接收到提交請(qǐng)求,參與器1 進(jìn)行提交。響應(yīng)于提交,參與器1將日志記錄強(qiáng)制寫(xiě)入到它的曰志 (635 ),其中日志記錄包括事務(wù)標(biāo)識(shí)符、與事務(wù)相關(guān)聯(lián)的狀態(tài)、參 與器1的標(biāo)識(shí)符以及參與器2的標(biāo)識(shí)符。應(yīng)當(dāng)理解,該事務(wù)尚未達(dá) 到參與器1被告知遺忘事務(wù)的狀態(tài)。響應(yīng)于檢測(cè)到(步驟800 )事務(wù)協(xié)調(diào)器(620 )的故障,參與器 l檢查事務(wù)協(xié)調(diào)器(620)正在協(xié)調(diào)的事務(wù)的事務(wù)標(biāo)識(shí)符(即T3)。 參與器1然后比較該事務(wù)的事務(wù)標(biāo)識(shí)符與它的日志(635 )中的一個(gè) 或者多個(gè)日志記錄。響應(yīng)于該比較,參與器1確定與事務(wù)相關(guān)聯(lián)的 狀態(tài)以及與參與事務(wù)的各其它參與器(即參與器2)相關(guān)聯(lián)的標(biāo)識(shí)符。參與器1將廣播消息發(fā)送(步驟805 )到參與器2。該消息包 括含有事務(wù)標(biāo)識(shí)符的字段以及含有與該事務(wù)相關(guān)聯(lián)的狀態(tài)的字段。 優(yōu)選地,該消息包括含有與參與事務(wù)的所有參與器(在這一例子中 為參與器1和參與器2)相關(guān)聯(lián)的標(biāo)識(shí)符的列表。下文示出了廣播消 息的例子
廣播(T3;提交;參與器l,參與器2)類(lèi)似地,響應(yīng)于參與器2確定(步驟810)事務(wù)協(xié)調(diào)器(620) 已經(jīng)發(fā)生故障,參與器2檢查事務(wù)協(xié)調(diào)器(620)正在協(xié)調(diào)的事務(wù)的 事務(wù)標(biāo)識(shí)符(即T3)。參與器2然后比較該事務(wù)的事務(wù)標(biāo)識(shí)符與它 的日志(645 )中的一個(gè)或者多個(gè)日志記錄。響應(yīng)于該比較,參與器 2確定與事務(wù)相關(guān)聯(lián)的狀態(tài)以及與參與事務(wù)的各其它參與器(即參與 器1 )相關(guān)聯(lián)的標(biāo)識(shí)符。參與器2將廣播消息發(fā)送(步驟815)到參與器1。該消息包 括含有事務(wù)標(biāo)識(shí)符的字段以及含有與該事務(wù)相關(guān)聯(lián)的狀態(tài)的字段。優(yōu)選地,該消息包括含有與參與事務(wù)的所有參與器(在這一例子中 為參與器1和參與器2)相關(guān)聯(lián)的標(biāo)識(shí)符的列表。下文示出了廣播消 息的例子廣播(T3;待定;參與器l,參與器2)響應(yīng)于從參與器l接收到廣播消息,參與器2將來(lái)自它的日志 記錄中的與事務(wù)相關(guān)聯(lián)的狀態(tài)(即待定)和從參與器1接收的與事 務(wù)相關(guān)聯(lián)的狀態(tài)(即提交)相聚集以便解決(步驟820 )事務(wù)。在第 十三例子中,參與器2通過(guò)提交來(lái)解決(步驟830 )事務(wù)。響應(yīng)于解決事務(wù),參與器2將日志記錄強(qiáng)制寫(xiě)入(步驟835 ) 到它的日志(645 ),其中日志記錄包括事務(wù)標(biāo)識(shí)符、與事務(wù)相關(guān)聯(lián) 的狀態(tài)、參與器1的標(biāo)識(shí)符以及參與器2的標(biāo)識(shí)符。應(yīng)當(dāng)理解,參與器2已經(jīng)從參與器1接收了廣播消息,該廣播 消息包括含有事務(wù)標(biāo)識(shí)符的字段以及含有與已解決的事務(wù)相關(guān)聯(lián)的 狀態(tài)的字段。這是因?yàn)閰⑴c器1提交了該事務(wù)。優(yōu)選地,參與器2 確i人廣播消息的接收。優(yōu)選地,參與器2將廣播消息發(fā)送到參與器1。該消息包括含 有事務(wù)標(biāo)識(shí)符的字段以及含有與已解決的事務(wù)相關(guān)聯(lián)的狀態(tài)的字 段。優(yōu)選地,參與器1確認(rèn)廣播消息的接收。參與器1和參與器2的日志記錄現(xiàn)在符合清除條件(步驟840 和845 )。
有利地,參與器在該參與器無(wú)需等待直至事務(wù)協(xié)調(diào)器重啟的情 況下就能夠解決事務(wù)。由此,資源無(wú)需保持鎖定,并且緩解了延遲。
權(quán)利要求
1.一種用于為涉及到多個(gè)參與器的工作單元提供原子性的方法,所述方法包括以下步驟將預(yù)備請(qǐng)求發(fā)送到至少一個(gè)參與器,其中所述請(qǐng)求包括為了恢復(fù)所述工作單元而需要的數(shù)據(jù);以及在恢復(fù)所述工作單元時(shí),恢復(fù)所述工作單元的步驟,其包括從所述至少一個(gè)參與器獲得所述數(shù)據(jù);以及使用所述獲得的數(shù)據(jù)來(lái)恢復(fù)和保留所述工作單元的原子性。
2. 如權(quán)利要求l所述的方法,其中所述數(shù)據(jù)包括如下細(xì)節(jié),根 據(jù)所述細(xì)節(jié)能夠確定所述工作單元的結(jié)果。
3. 如權(quán)利要求1或者2所述的方法,其中所述數(shù)據(jù)包括所述工 作單元中其它參與器的列表。
4. 如任一前述權(quán)利要求所述的方法,其中向預(yù)備請(qǐng)求被發(fā)送到 的最后參與器發(fā)送的所述數(shù)據(jù)包括提交所述工作單元的結(jié)果的指 示。
5. 如任一前述權(quán)利要求所述的方法,其中所述恢復(fù)所述工作單 元的步驟還包括響應(yīng)于所述獲得的數(shù)據(jù)包含提交所述工作單元的結(jié)果的指示, 將提交請(qǐng)求發(fā)送到所述至少 一個(gè)參與器。
6. 如權(quán)利要求5所述的方法,還包括以下步驟 將遺忘請(qǐng)求發(fā)送到所述至少一個(gè)參與器。
7. 如任一前述權(quán)利要求所述的方法,其中所述從所述至少一個(gè) 參與器獲得數(shù)據(jù)的步驟包括將對(duì)所述數(shù)據(jù)的請(qǐng)求發(fā)送到所述至少 一個(gè)參與器。
8. 如任一前述權(quán)利要求所述的方法,其中所述從所述至少一個(gè) 參與器獲得數(shù)據(jù)的步驟包括從所述至少一個(gè)參與器接收消息,所述消息包括所述數(shù)據(jù)。
9. 一種用于參與工作單元的方法,所述方法包括以下步驟 從所述工作單元的協(xié)調(diào)器接收預(yù)備請(qǐng)求,所述預(yù)備請(qǐng)求包括代表所述協(xié)調(diào)器進(jìn)行存儲(chǔ)的數(shù)據(jù);以及處理所述預(yù)備請(qǐng)求,所述處理步驟包括以下步驟 確定能夠完成更新;在非易失性存儲(chǔ)器中存儲(chǔ)所述數(shù)據(jù);以及 對(duì)所述預(yù)備請(qǐng)求做出響應(yīng),所述響應(yīng)包括能夠完成更新這 一指示。
10. 如權(quán)利要求9所述的方法,還包括以下步驟 從所述協(xié)調(diào)器接收對(duì)所述數(shù)據(jù)的請(qǐng)求;以及響應(yīng)于接收到所述請(qǐng)求,將所述數(shù)據(jù)提供給所述協(xié)調(diào)器。
11. 如權(quán)利要求9所述的方法,還包括以下步驟 將所述數(shù)據(jù)發(fā)送到所述協(xié)調(diào)器。
12. 如權(quán)利要求11所述的方法,其中所述發(fā)送數(shù)據(jù)的步驟對(duì)確 定與所述協(xié)調(diào)器失去聯(lián)系做出響應(yīng)。
13. —種用于為涉及到多個(gè)參與器的工作單元提供原子性的協(xié) 調(diào)器,所述協(xié)調(diào)器包括用于將預(yù)備請(qǐng)求發(fā)送到至少一個(gè)參與器的裝置,其中所述請(qǐng)求 包括為了恢復(fù)所述工作單元而需要的數(shù)據(jù);以及用于在恢復(fù)所述工作單元時(shí)恢復(fù)所述工作單元的裝置,其包括 用于從所述至少一個(gè)參與器獲得所述數(shù)據(jù)的裝置;以及 用于使用所述獲得的數(shù)據(jù)來(lái)恢復(fù)和保留所述工作單元的原 子性的裝置。
14. 如權(quán)利要求13所述的協(xié)調(diào)器,其中所述數(shù)據(jù)包括如下細(xì)節(jié), 根據(jù)所述細(xì)節(jié)能夠確定所述工作單元的結(jié)果。
15. 如權(quán)利要求13或者14所述的協(xié)調(diào)器,其中所述數(shù)據(jù)包括 所述工作單元中其它參與器的列表。
16. 如權(quán)利要求13至15中任一權(quán)利要求所述的協(xié)調(diào)器,其中 向預(yù)備請(qǐng)求被發(fā)送到的最后參與器發(fā)送的所述數(shù)據(jù)包括提交所述工 作單元的結(jié)果的指示。
17. 如權(quán)利要求13至16中任一權(quán)利要求所述的協(xié)調(diào)器,其中 所述用于恢復(fù)所述工作單元的裝置還包括用于響應(yīng)于所述獲得的數(shù)據(jù)包含提交所述工作單元的結(jié)果的指 示,而將提交請(qǐng)求發(fā)送到所述至少一個(gè)參與器的裝置。
18. 如權(quán)利要求17所述的協(xié)調(diào)器,還包括 用于將遺忘請(qǐng)求發(fā)送到所述至少一個(gè)參與器的裝置。
19. 如權(quán)利要求13至18中任一權(quán)利要求所述的協(xié)調(diào)器,其中 所述用于從所述至少一個(gè)參與器獲得數(shù)據(jù)的裝置包括用于將對(duì)所述數(shù)據(jù)的請(qǐng)求發(fā)送到所述至少 一個(gè)參與器的裝置。
20. 如權(quán)利要求13至19中任一權(quán)利要求所述的協(xié)調(diào)器,其中 所述用于從所述至少一個(gè)參與器獲得數(shù)據(jù)的裝置包括用于從所述至少 一 個(gè)參與器接收消息的裝置,所述消息包括所 述數(shù)據(jù)。
21. —種用于參與工作單元的參與器,包括用于從所述工作單元的協(xié)調(diào)器接收預(yù)備請(qǐng)求的裝置,所述預(yù)備請(qǐng)求包括代表所述協(xié)調(diào)器進(jìn)行存儲(chǔ)的數(shù)據(jù);以及用于處理所述預(yù)備請(qǐng)求的裝置,包括用于確定能夠完成更新的裝置; 用于存儲(chǔ)所述數(shù)據(jù)的非易失性存儲(chǔ)器;以及 用于對(duì)所述預(yù)備請(qǐng)求做出響應(yīng)的裝置,所述響應(yīng)包括能夠 完成更新的這一指示。
22. 如權(quán)利要求21所述的參與器,還包括用于從所述協(xié)調(diào)器接收對(duì)所述數(shù)據(jù)的請(qǐng)求的裝置;以及 用于響應(yīng)于接收到所述請(qǐng)求而將所述數(shù)據(jù)提供給所述協(xié)調(diào)器的 裝置。
23. 如權(quán)利要求21所述的參與器,還包括 用于將所述數(shù)據(jù)發(fā)送到所述協(xié)調(diào)器的裝置。
24. 如權(quán)利要求23所述的參與器,其中所述發(fā)送數(shù)據(jù)的裝置對(duì) 確定與所述協(xié)調(diào)器失去聯(lián)系做出響應(yīng)。
25. —種計(jì)算機(jī)程序,包括當(dāng)所述程序運(yùn)行于計(jì)算機(jī)上時(shí)適于 執(zhí)行如權(quán)利要求1至8中任一權(quán)利要求所述的所有步驟的程序代碼裝置。
26. —種計(jì)算機(jī)程序,包括當(dāng)所述程序運(yùn)行于計(jì)算機(jī)上時(shí)適于 執(zhí)行如權(quán)利要求9至12中任一權(quán)利要求所述的所有步驟的程序代碼裝置。
27. —種用于解決涉及到多個(gè)參與器的工作單元的方法,所述 方法包括以下步驟所述多個(gè)參與器中的各參與器獲得與所述多個(gè)參與器中的各其 它參與器相關(guān)聯(lián)的標(biāo)識(shí)符數(shù)據(jù);所述多個(gè)參與器中的各參與器從所述多個(gè)參與器中的各其它參 與器獲得包括與所述工作單元相關(guān)聯(lián)的狀態(tài)的第 一消息;以及至少一個(gè)參與器使用接收的第一消息來(lái)恢復(fù)所述工作單元。
28. 如權(quán)利要求27所述的方法,其中所述獲得所述第一消息的 步驟對(duì)確定與所述協(xié)調(diào)器失去聯(lián)系做出響應(yīng)。
29. 如權(quán)利要求27或者28所述的方法,其中所述使用步驟包括將所述第 一 消息中的所述狀態(tài)和與所述至少 一 個(gè)參與器相關(guān)聯(lián) 的日志記錄中的狀態(tài)相聚集;以及使用所述聚集的狀態(tài)來(lái)恢復(fù)所述工作單元。
30. 如權(quán)利要求27至29中任一權(quán)利要求所述的方法,其中所 述第一消息還包括與所述工作單元中涉及到的所述多個(gè)參與器中的 各參與器相關(guān)聯(lián)的標(biāo)識(shí)符的列表。
31. 如權(quán)利要求27至30中任一權(quán)利要求所述的方法,還包括 以下步驟響應(yīng)于恢復(fù)所述工作單元,所述至少一個(gè)參與器將第二 消息發(fā)送到所述多個(gè)參與器中的各其它參與器。
32. 如權(quán)利要求31所述的方法,其中所述第二消息包括與所述 工作單元相關(guān)聯(lián)的結(jié)果。
33. 如權(quán)利要求31或者32所述的方法,還包括以下步驟所述至少一個(gè)參與器和所述多個(gè)參與器中的各其它參與器清除關(guān)聯(lián)日 志記錄。
34. 如權(quán)利要求27至33中任一權(quán)利要求所述的方法,還包括 以下步驟響應(yīng)于協(xié)調(diào)器的重啟,所述多個(gè)參與器中的各參與器將 關(guān)聯(lián)日志記錄發(fā)送到所述協(xié)調(diào)器。
35. 如權(quán)利要求27至34中任一權(quán)利要求所述的方法,還包括 以下步驟響應(yīng)于協(xié)調(diào)器的重啟,所述協(xié)調(diào)器向所述多個(gè)參與器中 的各參與器發(fā)送對(duì)清除關(guān)聯(lián)日志記錄的請(qǐng)求。
36. 如權(quán)利要求27至35中任一權(quán)利要求所述的方法,其中所 述獲得所述第 一 消息的步驟包括所述多個(gè)參與器中的各參與器向所述多個(gè)參與器中的各其它參 與器發(fā)送對(duì)所述第一消息的請(qǐng)求;以及響應(yīng)于接收到請(qǐng)求,所述多個(gè)參與器中的各參與器將所述第一 消息發(fā)送到所述多個(gè)參與器中的各其它參與器。
37. 如權(quán)利要求27至36中任一權(quán)利要求所述的方法,其中所 述狀態(tài)包括結(jié)果。
38. 如權(quán)利要求27至37中任一權(quán)利要求所述的方法,其中所 述獲得所述標(biāo)識(shí)符的步驟包括從協(xié)調(diào)器獲得包括所述標(biāo)識(shí)符的預(yù) 備請(qǐng)求。
39. —種用于解決涉及到多個(gè)參與器的工作單元的系統(tǒng),所述 系統(tǒng)包括用于使所述多個(gè)參與器中的各參與器獲得與所述多個(gè)參與器中 的各其它參與器相關(guān)聯(lián)的標(biāo)識(shí)符數(shù)據(jù)的裝置;用于使所述多個(gè)參與器中的各參與器從所述多個(gè)參與器中的各 其它參與器獲得包括與所述工作單元相關(guān)聯(lián)的狀態(tài)的第一消息的裝 置;以及用于使至少一個(gè)參與器使用接收的第一消息來(lái)恢復(fù)所述工作單 元的裝置。
40. 如權(quán)利要求39所述的系統(tǒng),其中所述用于獲得所述第一消息的裝置對(duì)確定與所述協(xié)調(diào)器失去聯(lián)系做出響應(yīng)。
41. 如權(quán)利要求39或者40所述的系統(tǒng),其中所述用于使用的 裝置包括用于將所述第 一 消息中的所述狀態(tài)以和與所述至少 一 個(gè)參與器 相關(guān)聯(lián)的日志記錄中的狀態(tài)相聚集的裝置;以及用于使用所述聚集的狀態(tài)來(lái)恢復(fù)所述工作單元的裝置。
42. 如權(quán)利要求39至41中任一權(quán)利要求所述的系統(tǒng),其中所 述第一消息還包括與所述工作單元中涉及到的所述多個(gè)參與器中的 各參與器相關(guān)聯(lián)的標(biāo)識(shí)符的列表。
43. 如權(quán)利要求39至42中任一權(quán)利要求所述的系統(tǒng),還包括 用于響應(yīng)于恢復(fù)所述工作單元而使所述至少一個(gè)參與器將第二消息 發(fā)送到所述多個(gè)參與器中的各其它參與器的裝置。
44. 如權(quán)利要求43所述的系統(tǒng),其中所述第二消息包括與所述 工作單元相關(guān)聯(lián)的結(jié)果。
45. 如權(quán)利要求43或者44所述的系統(tǒng),還包括用于使所述 至少一個(gè)參與器和所述多個(gè)參與器中的各其它參與器清除關(guān)聯(lián)曰志 記錄的裝置。
46. 如權(quán)利要求39至45中任一權(quán)利要求所述的系統(tǒng),還包括 用于響應(yīng)于協(xié)調(diào)器的重啟而使所述多個(gè)參與器中的各參與器將關(guān)聯(lián) 日志記錄發(fā)送到所述協(xié)調(diào)器的裝置。
47. 如權(quán)利要求39至46中任一權(quán)利要求所述的系統(tǒng),還包括 用于響應(yīng)于協(xié)調(diào)器的重啟而使所述協(xié)調(diào)器向所述多個(gè)參與器中的各 參與器發(fā)送對(duì)清除關(guān)聯(lián)日志記錄的請(qǐng)求的裝置。
48. 如權(quán)利要求39至47中任一權(quán)利要求所述的系統(tǒng),其中所 述用于獲得所述第一消息的裝置包括用于使所述多個(gè)參與器中的各參與器向所述多個(gè)參與器中的各 其它參與器發(fā)送對(duì)所述第一消息的請(qǐng)求的裝置;以及用于響應(yīng)于接收到請(qǐng)求而使所述多個(gè)參與器中的各參與器將所 述第一消息發(fā)送到所述多個(gè)參與器中的各其它參與器的裝置。
49. 如權(quán)利要求39至48中任一4又利要求所述的系統(tǒng),其中所 述狀態(tài)包括結(jié)果。
50. 如權(quán)利要求39至49中任一權(quán)利要求所述的系統(tǒng),其中所 述用于獲得所述標(biāo)識(shí)符的裝置包括用于從協(xié)調(diào)器獲得包括所述標(biāo) 識(shí)符的預(yù)備請(qǐng)求的裝置。
51. —種用于解決涉及到多個(gè)參與器的工作單元的參與器,所 述參與器包括用于獲得與所述多個(gè)參與器中的各其它參與器相關(guān)聯(lián)的標(biāo)識(shí)符 數(shù)據(jù)的裝置;用于從所述多個(gè)參與器中的各其它參與器獲得包括與所述工作 單元相關(guān)聯(lián)的狀態(tài)的第一消息的裝置;以及用于使用接收的第一消息來(lái)恢復(fù)所述工作單元的裝置。
52. —種計(jì)算機(jī)程序,包括當(dāng)所述程序運(yùn)行于計(jì)算機(jī)上時(shí)適于 執(zhí)行如權(quán)利要求27至38中任一權(quán)利要求所述的所有步驟的程序代 碼裝置。
全文摘要
本發(fā)明提供了一種用于為涉及到多個(gè)參與器的工作單元提供原子性的方法和系統(tǒng)。該方法包括以下步驟將預(yù)備請(qǐng)求發(fā)送到至少一個(gè)參與器,其中該請(qǐng)求包括為了恢復(fù)工作單元而需要的數(shù)據(jù);以及在恢復(fù)工作單元時(shí),恢復(fù)工作單元,包括從至少一個(gè)參與器獲得數(shù)據(jù);以及使用獲得的數(shù)據(jù)來(lái)恢復(fù)和保留工作單元的原子性。利用本發(fā)明,參與器在該參與器無(wú)需等待直至事務(wù)協(xié)調(diào)器重啟的情況下就能夠解決事務(wù)。由此,資源無(wú)需保持鎖定,并且緩解了延遲。
文檔編號(hào)G06Q10/00GK101151630SQ200680010037
公開(kāi)日2008年3月26日 申請(qǐng)日期2006年4月6日 優(yōu)先權(quán)日2005年4月12日
發(fā)明者J·E·加爾扎, M·馬爾霍蘭, S·J·霍布森, S·鮑威爾 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司