本發(fā)明涉及分布式文件系統(tǒng)技術(shù)領(lǐng)域,特別是涉及一種基于共享存儲池的事務(wù)處理方法及系統(tǒng)。
背景技術(shù):
隨著大型網(wǎng)站的各種高并發(fā)訪問、海量數(shù)據(jù)處理等場景越來越多,如何實現(xiàn)網(wǎng)站的可擴展等目標就顯得越來越重要。為了解決這一系列問題,分布式文件系統(tǒng)應(yīng)運而生。
在分布式文件系統(tǒng)中通常利用兩階段提交協(xié)議進行事務(wù)處理,二階段提交是在計算機網(wǎng)絡(luò)以及數(shù)據(jù)庫領(lǐng)域內(nèi),為了使基于分布式文件系統(tǒng)架構(gòu)下的所有節(jié)點(元數(shù)據(jù)服務(wù)器)在進行事務(wù)提交時保持一致性而設(shè)計的一種算法。在分布式文件系統(tǒng)中,每個節(jié)點雖然可以知曉自己的操作是成功還是失敗,卻無法知道其他節(jié)點的操作是成功還是失敗。當一個事務(wù)跨越多個節(jié)點時,為了保持事務(wù)的ACID特性,需要從該事務(wù)對應(yīng)的多個節(jié)點中選取一個節(jié)點作為協(xié)調(diào)者來統(tǒng)一掌控其他節(jié)點(稱作參與者)的操作結(jié)果并最終指示這些節(jié)點是否要把操作結(jié)果進行真正的提交(比如將更新后的數(shù)據(jù)寫入磁盤等等)。因此,二階段提交的算法思路可以概括為:參與者將自身的操作成敗的消息反饋至協(xié)調(diào)者,再由協(xié)調(diào)者根據(jù)所有參與者的反饋消息決定各參與者是要進行提交操作還是中止操作。
具體地,參與者在將自身的操作成敗消息反饋至協(xié)調(diào)者以便協(xié)調(diào)者來判定事務(wù)的狀態(tài)后,通常情況下參與者在一定時間內(nèi)會接收到協(xié)調(diào)者發(fā)送的操作命令,這里的操作命令為執(zhí)行命令或者中止命令,但實際應(yīng)用中存在一些情況例如在網(wǎng)絡(luò)故障或者協(xié)調(diào)者出錯的情況下,參與者接收不到協(xié)調(diào)者發(fā)送的操作命令,使得參與者并不能確定此時事務(wù)的狀態(tài),進而也就不能進行相應(yīng)的操作。
因此,如何提供一種解決上述技術(shù)問題的方案是本領(lǐng)域技術(shù)人員目前需要解決的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種基于共享存儲池的事務(wù)處理方法,能夠使得參與者在沒有按時接收到協(xié)調(diào)者發(fā)送的操作命令時仍能夠在確定事務(wù)的狀態(tài),提高了容錯性;本發(fā)明的另一目的是提供一種基于共享存儲池的事務(wù)處理系統(tǒng)。
為解決上述技術(shù)問題,本發(fā)明提供了一種基于共享存儲池的事務(wù)處理方法,用于分布式文件系統(tǒng),包括:
步驟S11:各個參與者將自身的反饋消息反饋至協(xié)調(diào)者,并記錄本地日志,所述本地日志通過事務(wù)的ID來標記;
步驟S12:協(xié)調(diào)者根據(jù)是否在第一預(yù)設(shè)時間內(nèi)接收到所有參與者發(fā)送的反饋消息及是的情況下的所有參與者的反饋消息判斷事務(wù)的狀態(tài),并相應(yīng)地記錄一條包括所述事務(wù)的ID及狀態(tài)的全局日志到共享存儲池;
步驟S13:當所述參與者在第二預(yù)設(shè)時間內(nèi)沒有接收到所述協(xié)調(diào)者發(fā)送的操作命令時,所述參與者根據(jù)所述事務(wù)的ID去所述共享存儲池中查找所述全局日志并根據(jù)查找到的所述全局日志確定所述事務(wù)的狀態(tài),并根據(jù)所述事務(wù)的狀態(tài)進行相應(yīng)的操作。
優(yōu)選地,步驟S12的過程具體為:
步驟S121:所述協(xié)調(diào)者判斷是否在第一預(yù)設(shè)時間內(nèi)接收到所有參與者發(fā)送的反饋消息,如果是,則進入步驟S122,否則,進入步驟S124;
步驟S122:判斷是否所有參與者發(fā)送的反饋消息均為就緒消息,如果是,則進入步驟S123,否則,進入步驟S124;
步驟S123:所述協(xié)調(diào)者判斷所述事務(wù)為可執(zhí)行,并記錄一條包括所述事務(wù)的ID及狀態(tài)的全局日志到共享存儲池,并設(shè)置所述狀態(tài)為成功;
步驟S124:所述協(xié)調(diào)者判斷所述事務(wù)為不可執(zhí)行,并記錄一條包括所述事務(wù)的ID及狀態(tài)的全局日志到共享存儲池,并設(shè)置所述狀態(tài)為失敗。
優(yōu)選地,步驟S13的過程具體為:
當所述參與者在第二預(yù)設(shè)時間內(nèi)沒有接收到所述協(xié)調(diào)者發(fā)送的操作命令時,所述參與者根據(jù)所述事務(wù)的ID去查找所述存儲池中查找所述全局日志;
在查找到所述全局日志且所述全局日志中記錄的所述事務(wù)的狀態(tài)為成功時,所述參與者執(zhí)行相應(yīng)的元數(shù)據(jù)操作,當所述全局日志中記錄的所述事務(wù)的狀態(tài)為失敗時,所述參與者進行回滾操作。
優(yōu)選地,所述本地日志包括操作類型、文件路徑和元數(shù)據(jù)服務(wù)器標識。
優(yōu)選地,步驟S13還包括:
確定故障類型,所述故障類型包括網(wǎng)絡(luò)故障或者所述協(xié)調(diào)者出錯。
為解決上述技術(shù)問題,本發(fā)明還提供了一種基于共享存儲池的事務(wù)處理系統(tǒng),用于分布式文件系統(tǒng),包括:
反饋單元,用于各個參與者將自身的反饋消息反饋至協(xié)調(diào)者,并記錄本地日志,所述本地日志通過事務(wù)的ID來標記;
判斷單元,用于協(xié)調(diào)者根據(jù)是否在第一預(yù)設(shè)時間內(nèi)接收到所有參與者發(fā)送的反饋消息及是的情況下的所有參與者的反饋消息判斷事務(wù)的狀態(tài),并相應(yīng)地記錄一條包括所述事務(wù)的ID及狀態(tài)的全局日志到共享存儲池;
查找單元,用于當所述參與者在第二預(yù)設(shè)時間內(nèi)沒有接收到所述協(xié)調(diào)者發(fā)送的操作命令時,所述參與者根據(jù)所述事務(wù)的ID去所述共享存儲池中查找所述全局日志并根據(jù)查找到的所述全局日志確定所述事務(wù)的狀態(tài),并根據(jù)所述事務(wù)的狀態(tài)進行相應(yīng)的操作。
優(yōu)選地,所述判斷單元具體包括:
第一判斷單元,用于所述協(xié)調(diào)者判斷是否在第一預(yù)設(shè)時間內(nèi)接收到所有參與者發(fā)送的反饋消息,如果是,則觸發(fā)所述第二判斷單元,否則,觸發(fā)所述第二確定單元;
第二判斷單元,用于判斷是否所有參與者發(fā)送的反饋消息均為就緒消息,如果是,則觸發(fā)所述第一確定單元,否則,觸發(fā)所述第二確定單元;
第一確定單元,用于所述協(xié)調(diào)者判斷所述事務(wù)為可執(zhí)行,并記錄一條包括所述事務(wù)的ID及狀態(tài)的全局日志到共享存儲池,并設(shè)置所述狀態(tài)為成功;
第二確定單元,用于所述協(xié)調(diào)者判斷所述事務(wù)為不可執(zhí)行,并記錄一條包括所述事務(wù)的ID及狀態(tài)的全局日志到共享存儲池,并設(shè)置所述狀態(tài)為失敗。
優(yōu)選地,所述查找單元具體包括:
查找子單元,用于當所述參與者在第二預(yù)設(shè)時間內(nèi)沒有接收到所述協(xié)調(diào)者發(fā)送的操作命令時,所述參與者根據(jù)所述事務(wù)的ID去查找所述存儲池中查找所述全局日志;
執(zhí)行單元,用于在查找到所述全局日志且所述全局日志中記錄的所述事務(wù)的狀態(tài)為成功時,所述參與者執(zhí)行相應(yīng)的元數(shù)據(jù)操作,當所述全局日志中記錄的所述事務(wù)的狀態(tài)為失敗時,所述參與者進行回滾操作。
優(yōu)選地,所述本地日志包括操作類型、文件路徑和元數(shù)據(jù)服務(wù)器標識。
優(yōu)選地,所述查找單元還包括:
故障確定單元,用于確定故障類型,所述故障類型包括網(wǎng)絡(luò)故障或者所述協(xié)調(diào)者出錯。
本發(fā)明提供了一種基于共享存儲池的事務(wù)處理方法及系統(tǒng),用于分布式文件系統(tǒng),包括各個參與者將自身的反饋消息反饋至協(xié)調(diào)者,并記錄本地日志,本地日志通過事務(wù)的ID來標記;協(xié)調(diào)者根據(jù)是否在第一預(yù)設(shè)時間內(nèi)接收到所有參與者發(fā)送的反饋消息及是的情況下的所有參與者的反饋消息判斷事務(wù)的狀態(tài),并相應(yīng)地記錄一條包括事務(wù)的ID及狀態(tài)的全局日志到共享存儲池;當參與者在第二預(yù)設(shè)時間內(nèi)沒有接收到協(xié)調(diào)者發(fā)送的操作命令時,參與者根據(jù)事務(wù)的ID去共享存儲池中查找全局日志并根據(jù)查找到的全局日志確定事務(wù)的狀態(tài),并根據(jù)事務(wù)的狀態(tài)進行相應(yīng)的操作。
可見,本發(fā)明中,協(xié)調(diào)者在判斷得到事務(wù)的狀態(tài)后,會記錄包括事務(wù)的ID及狀態(tài)全局日志到共享存儲池中,當參與者在第二預(yù)設(shè)時間內(nèi)沒有接收到協(xié)調(diào)者發(fā)送的操作命令時,參與者根據(jù)事務(wù)的ID去共享存儲池中查找全局日志并根據(jù)查找到的全局日志確定事務(wù)的狀態(tài),并根據(jù)事務(wù)的狀態(tài)進行相應(yīng)的操作,能夠使得參與者在沒有按時接收到協(xié)調(diào)者發(fā)送的操作命令時仍能夠在確定事務(wù)的狀態(tài),提高了容錯性。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對現(xiàn)有技術(shù)和實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明提供的一種基于共享存儲池的事務(wù)處理方法的過程的流程圖;
圖2為本發(fā)明提供的一種基于共享存儲池的事務(wù)處理系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
本發(fā)明的核心是提供一種基于共享存儲池的事務(wù)處理方法,能夠使得參與者在沒有按時接收到協(xié)調(diào)者發(fā)送的操作命令時仍能夠在確定事務(wù)的狀態(tài),提高了容錯性;本發(fā)明的另一核心是提供一種基于共享存儲池的事務(wù)處理系統(tǒng)。
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參照圖1,圖1為本發(fā)明提供的一種基于共享存儲池的事務(wù)處理方法的過程的流程圖,該方法用于分布式文件系統(tǒng),包括:
步驟S11:各個參與者將自身的反饋消息反饋至協(xié)調(diào)者,并記錄本地日志,本地日志通過事務(wù)的ID來標記;
具體地,客戶端提交操作請求,分布式文件系統(tǒng)選擇出相應(yīng)的元數(shù)據(jù)服務(wù)器,并分配不同的角色,也即選出一個協(xié)調(diào)者,其余的作為事務(wù)的參與者。
在準備階段,協(xié)調(diào)者向每個參與者發(fā)送準備命令,通知其進行操作條件的檢查,并等待參與者的應(yīng)答。每個參與者接收到準備命令后判斷自身是否滿足執(zhí)行事務(wù)的條件,也即是否能夠執(zhí)行提交操作,如果是,則向協(xié)調(diào)者發(fā)送一個就緒的反饋消息,否則,向協(xié)調(diào)者發(fā)送一個中止的反饋消息。另外,參與者還記錄本地日志文件,并通過分布式事務(wù)的ID來進行標記。
本地日志用來記錄事務(wù)中與本地節(jié)點相關(guān)的元數(shù)據(jù)操作信息。
作為優(yōu)選地,本地日志包括操作類型、文件路徑和元數(shù)據(jù)服務(wù)器標識。
當然,這里的本地日志還可以包括其他元數(shù)據(jù)操作信息,本發(fā)明在此不作特別的限定,根據(jù)實際情況來定。
步驟S12:協(xié)調(diào)者根據(jù)是否在第一預(yù)設(shè)時間內(nèi)接收到所有參與者發(fā)送的反饋消息及是的情況下的所有參與者的反饋消息判斷事務(wù)的狀態(tài),并相應(yīng)地記錄一條包括事務(wù)的ID及狀態(tài)的全局日志到共享存儲池;
具體地,全局日志用來記錄事務(wù)的ID和事務(wù)的狀態(tài),每個元數(shù)據(jù)服務(wù)器都有自己的本地日志,但全局日志在分布式文件系統(tǒng)中只維護一份。
作為優(yōu)選地,步驟S12的過程具體為:
步驟S121:協(xié)調(diào)者判斷是否在第一預(yù)設(shè)時間內(nèi)接收到所有參與者發(fā)送的反饋消息,如果是,則進入步驟S122,否則,進入步驟S124;
步驟S122:判斷是否所有參與者發(fā)送的反饋消息均為就緒消息,如果是,則進入步驟S123,否則,進入步驟S124;
步驟S123:協(xié)調(diào)者判斷事務(wù)為可執(zhí)行,并記錄一條包括事務(wù)的ID及狀態(tài)的全局日志到共享存儲池,并設(shè)置狀態(tài)為成功;
步驟S124:協(xié)調(diào)者判斷事務(wù)為不可執(zhí)行,并記錄一條包括事務(wù)的ID及狀態(tài)的全局日志到共享存儲池,并設(shè)置狀態(tài)為失敗。
在判定階段,協(xié)調(diào)者判斷是否在第一預(yù)設(shè)時間內(nèi)接收到所有參與者發(fā)送的反饋消息,如果是,則此時事務(wù)的狀態(tài)是確定的,則再判斷所有參與者發(fā)送的反饋消息為就緒消息還是中止消息,如果所有的參與者發(fā)送的反饋消息均為就緒消息,則判斷事務(wù)為可執(zhí)行,并記錄一條包括事務(wù)的ID及狀態(tài)的全局日志到共享存儲池,并設(shè)置狀態(tài)為成功,如果有部分或者全部的參與者的反饋消息為中止消息,則判斷事務(wù)為不可執(zhí)行,并記錄一條包括事務(wù)的ID及狀態(tài)的全局日志到共享存儲池,并設(shè)置狀態(tài)為失敗。因為在協(xié)調(diào)者等待參與者的反饋消息的過程中容易出現(xiàn)故障,容易導致協(xié)調(diào)者不能及時接收到參與者的消息。如果協(xié)調(diào)者在第一預(yù)設(shè)時間內(nèi)沒有收到部分或者全部參與者的反饋消息,則將所有的故障都歸結(jié)為超時錯誤,并將判斷事務(wù)為不可執(zhí)行,并記錄一條包括事務(wù)的ID及狀態(tài)的全局日志到共享存儲池,并設(shè)置狀態(tài)為失敗。
步驟S13:當參與者在第二預(yù)設(shè)時間內(nèi)沒有接收到協(xié)調(diào)者發(fā)送的操作命令時,參與者根據(jù)事務(wù)的ID去共享存儲池中查找全局日志并根據(jù)查找到的全局日志確定事務(wù)的狀態(tài),并根據(jù)事務(wù)的狀態(tài)進行相應(yīng)的操作。
在準備階段和判定階段完成后,事務(wù)進入到執(zhí)行階段,協(xié)調(diào)者廣播操作命令給各個參與者,這里的操作命令包括執(zhí)行命令和取消命令。在沒有故障的情況下,參與者接收到執(zhí)行命令后開始進行各自的元數(shù)據(jù)操作,如果接收到取消命令,則不進行分布式事務(wù)的操作,進行回滾操作。
當參與者在第二預(yù)設(shè)時間內(nèi)沒有接收到協(xié)調(diào)者發(fā)送的操作命令時,則餐飲組合可以根據(jù)事務(wù)的ID去共享存儲池中查找,當查找到全局日志后,根據(jù)全局日志中的記錄信息確定事務(wù)的狀態(tài),然后再根據(jù)事務(wù)的狀態(tài)進行相應(yīng)的操作。
作為優(yōu)選地,步驟S13的過程具體為:
當參與者在第二預(yù)設(shè)時間內(nèi)沒有接收到協(xié)調(diào)者發(fā)送的操作命令時,參與者根據(jù)事務(wù)的ID去查找存儲池中查找全局日志;
在查找到全局日志且全局日志中記錄的事務(wù)的狀態(tài)為成功時,參與者執(zhí)行相應(yīng)的元數(shù)據(jù)操作,當全局日志中記錄的事務(wù)的狀態(tài)為失敗時,參與者進行回滾操作。
作為優(yōu)選地,步驟S13還包括:
確定故障類型,故障類型包括網(wǎng)絡(luò)故障或者協(xié)調(diào)者出錯。
具體地,此時可以將故障類型縮小至網(wǎng)絡(luò)故障或者協(xié)調(diào)者出錯。
另外,如果參與者沒有在共享存儲池中發(fā)現(xiàn)全局日志,此時需要通過協(xié)調(diào)者寫全局日志的時間與第二預(yù)設(shè)時間來確定故障,如果協(xié)調(diào)者寫全局日志的時間大于第二預(yù)設(shè)時間,則此時參與者沒找到全局日志可能是因為協(xié)調(diào)者還沒寫入,那么參與者可以再等一會,如果仍然找不到,則可能是協(xié)調(diào)者無法寫入或者網(wǎng)絡(luò)故障。如果協(xié)調(diào)者寫全局日志的時間小于第二預(yù)設(shè)時間,則此時參與者沒找到全局日志說明是協(xié)調(diào)者無法寫入或者網(wǎng)絡(luò)故障。
因為共享存儲池非??煽?,因此能夠保證參與者對全局日志的正確訪問,避免出錯帶來的不確定性。
本發(fā)明提供了一種基于共享存儲池的事務(wù)處理方法,用于分布式文件系統(tǒng),包括各個參與者將自身的反饋消息反饋至協(xié)調(diào)者,并記錄本地日志,本地日志通過事務(wù)的ID來標記;協(xié)調(diào)者根據(jù)是否在第一預(yù)設(shè)時間內(nèi)接收到所有參與者發(fā)送的反饋消息及是的情況下的所有參與者的反饋消息判斷事務(wù)的狀態(tài),并相應(yīng)地記錄一條包括事務(wù)的ID及狀態(tài)的全局日志到共享存儲池;當參與者在第二預(yù)設(shè)時間內(nèi)沒有接收到協(xié)調(diào)者發(fā)送的操作命令時,參與者根據(jù)事務(wù)的ID去共享存儲池中查找全局日志并根據(jù)查找到的全局日志確定事務(wù)的狀態(tài),并根據(jù)事務(wù)的狀態(tài)進行相應(yīng)的操作。
可見,本發(fā)明中,協(xié)調(diào)者在判斷得到事務(wù)的狀態(tài)后,會記錄包括事務(wù)的ID及狀態(tài)全局日志到共享存儲池中,當參與者在第二預(yù)設(shè)時間內(nèi)沒有接收到協(xié)調(diào)者發(fā)送的操作命令時,參與者根據(jù)事務(wù)的ID去共享存儲池中查找全局日志并根據(jù)查找到的全局日志確定事務(wù)的狀態(tài),并根據(jù)事務(wù)的狀態(tài)進行相應(yīng)的操作,能夠使得參與者在沒有按時接收到協(xié)調(diào)者發(fā)送的操作命令時仍能夠在確定事務(wù)的狀態(tài),提高了容錯性。
與上述方法實施例相適應(yīng)地,請參照圖2,圖2為本發(fā)明提供的一種基于共享存儲池的事務(wù)處理系統(tǒng)的結(jié)構(gòu)示意圖,該系統(tǒng)用于分布式文件系統(tǒng),包括:
反饋單元1,用于各個參與者將自身的反饋消息反饋至協(xié)調(diào)者,并記錄本地日志,本地日志通過事務(wù)的ID來標記;
判斷單元2,用于協(xié)調(diào)者根據(jù)是否在第一預(yù)設(shè)時間內(nèi)接收到所有參與者發(fā)送的反饋消息及是的情況下的所有參與者的反饋消息判斷事務(wù)的狀態(tài),并相應(yīng)地記錄一條包括事務(wù)的ID及狀態(tài)的全局日志到共享存儲池;
查找單元3,用于當參與者在第二預(yù)設(shè)時間內(nèi)沒有接收到協(xié)調(diào)者發(fā)送的操作命令時,參與者根據(jù)事務(wù)的ID去共享存儲池中查找全局日志并根據(jù)查找到的全局日志確定事務(wù)的狀態(tài),并根據(jù)事務(wù)的狀態(tài)進行相應(yīng)的操作。
作為優(yōu)選地,判斷單元2具體包括:
第一判斷單元,用于協(xié)調(diào)者判斷是否在第一預(yù)設(shè)時間內(nèi)接收到所有參與者發(fā)送的反饋消息,如果是,則觸發(fā)第二判斷單元,否則,觸發(fā)第二確定單元;
第二判斷單元,用于判斷是否所有參與者發(fā)送的反饋消息均為就緒消息,如果是,則觸發(fā)第一確定單元,否則,觸發(fā)第二確定單元;
第一確定單元,用于協(xié)調(diào)者判斷事務(wù)為可執(zhí)行,并記錄一條包括事務(wù)的ID及狀態(tài)的全局日志到共享存儲池,并設(shè)置狀態(tài)為成功;
第二確定單元,用于協(xié)調(diào)者判斷事務(wù)為不可執(zhí)行,并記錄一條包括事務(wù)的ID及狀態(tài)的全局日志到共享存儲池,并設(shè)置狀態(tài)為失敗。
作為優(yōu)選地,查找單元3具體包括:
查找子單元,用于當參與者在第二預(yù)設(shè)時間內(nèi)沒有接收到協(xié)調(diào)者發(fā)送的操作命令時,參與者根據(jù)事務(wù)的ID去查找存儲池中查找全局日志;
執(zhí)行單元,用于在查找到全局日志且全局日志中記錄的事務(wù)的狀態(tài)為成功時,參與者執(zhí)行相應(yīng)的元數(shù)據(jù)操作,當全局日志中記錄的事務(wù)的狀態(tài)為失敗時,參與者進行回滾操作。
作為優(yōu)選地,本地日志包括操作類型、文件路徑和元數(shù)據(jù)服務(wù)器標識。
作為優(yōu)選地,查找單元3還包括:
故障確定單元,用于確定故障類型,故障類型包括網(wǎng)絡(luò)故障或者協(xié)調(diào)者出錯。
對于本發(fā)明提供的基于共享存儲池的事務(wù)處理系統(tǒng)的介紹請參照上述方法實施例,本發(fā)明在此不再贅述。
本發(fā)明提供了一種基于共享存儲池的事務(wù)處理系統(tǒng),用于分布式文件系統(tǒng),包括各個參與者將自身的反饋消息反饋至協(xié)調(diào)者,并記錄本地日志,本地日志通過事務(wù)的ID來標記;協(xié)調(diào)者根據(jù)是否在第一預(yù)設(shè)時間內(nèi)接收到所有參與者發(fā)送的反饋消息及是的情況下的所有參與者的反饋消息判斷事務(wù)的狀態(tài),并相應(yīng)地記錄一條包括事務(wù)的ID及狀態(tài)的全局日志到共享存儲池;當參與者在第二預(yù)設(shè)時間內(nèi)沒有接收到協(xié)調(diào)者發(fā)送的操作命令時,參與者根據(jù)事務(wù)的ID去共享存儲池中查找全局日志并根據(jù)查找到的全局日志確定事務(wù)的狀態(tài),并根據(jù)事務(wù)的狀態(tài)進行相應(yīng)的操作。
可見,本發(fā)明中,協(xié)調(diào)者在判斷得到事務(wù)的狀態(tài)后,會記錄包括事務(wù)的ID及狀態(tài)全局日志到共享存儲池中,當參與者在第二預(yù)設(shè)時間內(nèi)沒有接收到協(xié)調(diào)者發(fā)送的操作命令時,參與者根據(jù)事務(wù)的ID去共享存儲池中查找全局日志并根據(jù)查找到的全局日志確定事務(wù)的狀態(tài),并根據(jù)事務(wù)的狀態(tài)進行相應(yīng)的操作,提高了容錯性。
需要說明的是,在本說明書中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其他實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。