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

一種非阻塞式容錯(cuò)的分布式事務(wù)提交方法及系統(tǒng)的制作方法

文檔序號(hào):9432366閱讀:483來源:國(guó)知局
一種非阻塞式容錯(cuò)的分布式事務(wù)提交方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫(kù)和分布式系統(tǒng)技術(shù)領(lǐng)域,特別涉及一種非阻塞式容錯(cuò)的分布式事務(wù)提交方法及系統(tǒng)。
【背景技術(shù)】
[0002]事務(wù)可以保證金融交易的順利進(jìn)行,亦可保證一組數(shù)據(jù)訪問操作的正確執(zhí)行,為了保證事務(wù)的原子性,數(shù)據(jù)庫(kù)系統(tǒng)需要執(zhí)行一個(gè)事務(wù)的全部操作,或者不執(zhí)行一個(gè)事務(wù)的任何操作,原子性允許多個(gè)操作聯(lián)合起來產(chǎn)生結(jié)果,但是系統(tǒng)中的失效會(huì)妨礙原子性的保證,例如,若分布式系統(tǒng)中的一個(gè)設(shè)備或通訊失效,一個(gè)事務(wù)相關(guān)的分?jǐn)?shù)據(jù)庫(kù)中可能會(huì)將事務(wù)執(zhí)行完成,而有的則回滾事務(wù),假如存儲(chǔ)事務(wù)相關(guān)數(shù)據(jù)的分?jǐn)?shù)據(jù)庫(kù)不能回滾到事務(wù)開始前的一個(gè)穩(wěn)定狀態(tài),這將使得分?jǐn)?shù)據(jù)庫(kù)處于不同的狀態(tài)中,從而導(dǎo)致系統(tǒng)數(shù)據(jù)的毀壞。
[0003]在一個(gè)分布式系統(tǒng)中,分布式事務(wù)的原子性由原子提交協(xié)議(Atomic CommitProtocol, ACP)保證,當(dāng)前,最新技術(shù)水平系統(tǒng)常用的ACP有以下幾個(gè):
[0004]1、兩階段提交(2PC) 業(yè)界標(biāo)準(zhǔn)、使用最廣泛
[0005]在過去30多年時(shí)間里,分布式原子提交操作是由“兩階段提交”協(xié)議或其變異方案來保證的,此協(xié)議共分為兩階段,即協(xié)議開始時(shí),參與節(jié)點(diǎn)發(fā)送“準(zhǔn)備好”消息或“回滾”消息給協(xié)調(diào)節(jié)點(diǎn),參與節(jié)點(diǎn)決定本地是否已經(jīng)“準(zhǔn)備好”提交事務(wù)或者只能“回滾”事務(wù),并將決定和相關(guān)數(shù)據(jù)寫入日志中,在第一階段,協(xié)調(diào)節(jié)點(diǎn)決定提交或回滾事務(wù),如果協(xié)調(diào)節(jié)點(diǎn)收到了所有參與節(jié)點(diǎn)的“準(zhǔn)備好”消息,協(xié)調(diào)節(jié)點(diǎn)可以決定提交事務(wù),如果協(xié)調(diào)節(jié)點(diǎn)收到任何一個(gè)參與節(jié)點(diǎn)的“回滾”消息,協(xié)調(diào)節(jié)點(diǎn)只能回滾事務(wù);在第二階段,協(xié)調(diào)節(jié)點(diǎn)將決定寫入日志,并向所有參與節(jié)點(diǎn)發(fā)送消息通知它們提交或回滾事務(wù),參與節(jié)點(diǎn)可以相應(yīng)地處理事務(wù)。
[0006]因?yàn)閰f(xié)調(diào)節(jié)點(diǎn)單方?jīng)Q定事務(wù)的結(jié)果,單個(gè)參與節(jié)點(diǎn)的失效不會(huì)阻塞事務(wù),如果一個(gè)參與節(jié)點(diǎn)在發(fā)送“準(zhǔn)備好”或“回滾”消息前失效或失聯(lián)了,協(xié)調(diào)節(jié)點(diǎn)在等待一定時(shí)間后會(huì)單方面決定回滾事務(wù),但是,兩階段提交在某些情況下依然會(huì)阻塞,例如,如果所有參與節(jié)點(diǎn)發(fā)送了“準(zhǔn)備好”消息后協(xié)調(diào)節(jié)點(diǎn)失效了,參與節(jié)點(diǎn)將會(huì)被阻塞直到協(xié)調(diào)節(jié)點(diǎn)恢復(fù)并確定事務(wù)的結(jié)果。
[0007]2、三階段提交(3PC)—一同步系統(tǒng)模型下的非阻塞式協(xié)議
[0008]三階段提交協(xié)議希望通過增加一個(gè)階段來可以解決兩階段提交的阻塞問題,在該階段中,一個(gè)關(guān)于事務(wù)提交或回滾的初步?jīng)Q定被發(fā)送給參與節(jié)點(diǎn),如果協(xié)調(diào)節(jié)點(diǎn)失效了,參與節(jié)點(diǎn)中的一個(gè)將被選出作為新的協(xié)調(diào)節(jié)點(diǎn)來繼續(xù)執(zhí)行協(xié)議,當(dāng)失效的協(xié)調(diào)節(jié)點(diǎn)恢復(fù)后,它將成為參與節(jié)點(diǎn)而不再是協(xié)調(diào)節(jié)點(diǎn),但是,在很多應(yīng)用中,由于實(shí)際系統(tǒng)并不符合同步系統(tǒng)模型,實(shí)現(xiàn)傳統(tǒng)的三階段提交并不可行,而且,三階段提交也會(huì)阻塞,如果多個(gè)參與節(jié)點(diǎn)失效了或如果存在一個(gè)通訊故障,三階段提交的另一個(gè)缺陷是過高的通訊代價(jià)。
[0009]3、最新的分布式提交協(xié)議
[0010]由于高可用性和容錯(cuò)性的需求,大規(guī)模系統(tǒng)一般都采用復(fù)制策略,最新的分布式提交協(xié)議是基于此假設(shè)提出的,此類協(xié)議中,最著名的包括Spanner、復(fù)制提交、MDCC、消息期貨等。Spanner采用了 2PC加上著名的容錯(cuò)協(xié)議Paxos來分層實(shí)現(xiàn),將2PC實(shí)現(xiàn)層次基于Paxos復(fù)制共識(shí)層次進(jìn)行實(shí)現(xiàn);復(fù)制提交與Spanner的差別在于,它將Paxos復(fù)制共識(shí)層次基于2PC層次實(shí)現(xiàn);MDCC將復(fù)制與提交揉合在一起,利用Paxos和Paxos的變體算法實(shí)現(xiàn)事務(wù)參與節(jié)點(diǎn)的提交共識(shí)達(dá)成;消息期貨要求參與節(jié)點(diǎn)將提交請(qǐng)求寫入日志,而日志通過可容錯(cuò)協(xié)議進(jìn)行復(fù)制和共享,來實(shí)現(xiàn)提交共識(shí)的達(dá)成。其它最新的提交協(xié)議的主要思想與上述協(xié)議基本類似。
[0011]在這些協(xié)議中,像Spanner這樣,將2PC實(shí)現(xiàn)于容錯(cuò)共識(shí)協(xié)議層次上,其通訊代價(jià)是兩個(gè)協(xié)議通訊代價(jià)之和,存在通訊代價(jià)高的問題;像復(fù)制提交這樣,將容錯(cuò)共識(shí)協(xié)議實(shí)現(xiàn)于2PC層次上,將引入2PC的阻塞問題,導(dǎo)致單個(gè)數(shù)據(jù)中心的事務(wù)阻塞;MDCC必須與樂觀并發(fā)控制一起使用,后者存在當(dāng)負(fù)載大時(shí)性能低下的問題,同時(shí),當(dāng)存在共識(shí)沖突時(shí)需要執(zhí)行修復(fù)過程,而修復(fù)過程的通訊代價(jià)極高;消息期貨也只能與樂觀并發(fā)控制一起使用,同時(shí),共享日志在現(xiàn)實(shí)中難以實(shí)現(xiàn)和保證。
[0012]—發(fā)明提供了一種基于分布式實(shí)時(shí)數(shù)據(jù)庫(kù)系統(tǒng)的事務(wù)提交方法,包括:協(xié)調(diào)者將第一個(gè)發(fā)送完成數(shù)據(jù)操作的消息的參與者作為候選協(xié)調(diào)者,并向候選協(xié)調(diào)者發(fā)送準(zhǔn)備消息和任命消息;協(xié)調(diào)者發(fā)送準(zhǔn)備消息至普通參與者和協(xié)調(diào)者本身;協(xié)調(diào)者接收并依據(jù)所述候選協(xié)調(diào)者、普通參與者和協(xié)調(diào)者本身在接收到所述準(zhǔn)備消息后,各自處理各自的子事務(wù)后所得到的各自的處理反饋消息,發(fā)送最終決定消息至候選協(xié)調(diào)者、普通參與者和協(xié)調(diào)者本身;候選協(xié)調(diào)者、普通參與者和協(xié)調(diào)者本身在預(yù)設(shè)時(shí)間內(nèi)均未接收到所述最終決定消息的情況下,候選協(xié)調(diào)者自動(dòng)轉(zhuǎn)換為協(xié)調(diào)者,返回執(zhí)行接收所有參與者的完成數(shù)據(jù)操作的消息這一步驟。該發(fā)明降低了阻塞的概率,提高了事務(wù)提交的實(shí)時(shí)性,與本發(fā)明的區(qū)別在于,本發(fā)明是可替代2PC的分布式事務(wù)提交方法,無需利用事務(wù)協(xié)調(diào)者,而該發(fā)明是基于2PC提出的分布式事務(wù)提交方法,利用了一個(gè)候選協(xié)調(diào)者,無法應(yīng)對(duì)協(xié)調(diào)者和候選協(xié)調(diào)者同時(shí)失效的情況。

【發(fā)明內(nèi)容】

[0013]針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明提出一種非阻塞式容錯(cuò)的分布式事務(wù)提交方法及系統(tǒng)。
[0014]本發(fā)明提出一種非阻塞式容錯(cuò)的分布式事務(wù)提交方法,包括:
[0015]步驟1,定位所述分布式事務(wù)數(shù)據(jù)存儲(chǔ)的多個(gè)節(jié)點(diǎn),所述多個(gè)節(jié)點(diǎn)共同執(zhí)行所述分布式事務(wù),選取所述多個(gè)節(jié)點(diǎn)中或系統(tǒng)外的一個(gè)節(jié)點(diǎn)作為初始第一節(jié)點(diǎn);
[0016]步驟2,取得所述分布式事務(wù)的全局唯一事務(wù)標(biāo)識(shí)符;
[0017]步驟3,所述初始節(jié)點(diǎn)向除所述初始第一節(jié)點(diǎn)之外的節(jié)點(diǎn)發(fā)起所述分布式事務(wù)的提交請(qǐng)求,除所述初始第一節(jié)點(diǎn)之外的節(jié)點(diǎn)分別在本地對(duì)所述分布式事務(wù)進(jìn)行提交后,向所述初始第一節(jié)點(diǎn)發(fā)送確認(rèn)提交消息,對(duì)于所述分布式事務(wù)涉及的每個(gè)數(shù)據(jù)項(xiàng),所述初始第一節(jié)點(diǎn)收集到所述數(shù)據(jù)項(xiàng)的復(fù)本所在的多個(gè)節(jié)點(diǎn)中一半以上的確認(rèn)提交消息后,完成所述分布式事務(wù)的提交過程。
[0018]所述的非阻塞式容錯(cuò)的分布式事務(wù)提交方法,包括:
[0019]所述多個(gè)節(jié)點(diǎn)中的每一個(gè)節(jié)點(diǎn)都對(duì)應(yīng)一個(gè)全局節(jié)點(diǎn)標(biāo)識(shí)符,所有的全局節(jié)點(diǎn)標(biāo)識(shí)符被單調(diào)排序,且所述多個(gè)節(jié)點(diǎn)的每一個(gè)節(jié)點(diǎn)分別存儲(chǔ)所述分布式事務(wù)的部分?jǐn)?shù)據(jù),并負(fù)責(zé)所述分布式事務(wù)在節(jié)點(diǎn)上的數(shù)據(jù)操作,且對(duì)于需要容錯(cuò)保證的、所述分布式事務(wù)涉及的每個(gè)所述數(shù)據(jù)項(xiàng),分別存儲(chǔ)在三個(gè)或三個(gè)以上的復(fù)本,且所述復(fù)本至少分布在三個(gè)或三個(gè)以上的不同節(jié)點(diǎn)上。
[0020]所述的非阻塞式容錯(cuò)的分布式事務(wù)提交方法,包括:
[0021]所述多個(gè)節(jié)點(diǎn)記錄所述初始第一節(jié)點(diǎn)的狀態(tài)信息,以便判斷所述初始第一節(jié)點(diǎn)是否失效,所述多個(gè)節(jié)點(diǎn)及所述初始第一節(jié)點(diǎn)記錄參與所述分布式事務(wù)的所有節(jié)點(diǎn)的全局節(jié)點(diǎn)標(biāo)識(shí)符。
[0022]所述的非阻塞式容錯(cuò)的分布式事務(wù)提交方法,還包括分布式事務(wù)提交修復(fù)步驟:
[0023]如果任一節(jié)點(diǎn)發(fā)現(xiàn)所述初始第一節(jié)點(diǎn)失效,則發(fā)現(xiàn)所述初始第一節(jié)點(diǎn)失效的節(jié)點(diǎn)向所述多個(gè)節(jié)點(diǎn)中的其他節(jié)點(diǎn)申請(qǐng)成為新初始第一節(jié)點(diǎn),并開始分布式事務(wù)提交修復(fù)流程,直到完成分布式事務(wù)提交過程。
[0024]所述的非阻塞式容錯(cuò)的分布式事務(wù)提交方法,所述分布式事務(wù)提交修復(fù)步驟的具體步驟為:
[0025](I)任一節(jié)點(diǎn)發(fā)現(xiàn)初始第一節(jié)點(diǎn)失效后,向所述多個(gè)節(jié)點(diǎn)中的其他節(jié)點(diǎn)發(fā)送申請(qǐng)成為初始第一節(jié)點(diǎn)的申請(qǐng)請(qǐng)求,并設(shè)置申請(qǐng)輪數(shù)r,使r比所述任一節(jié)點(diǎn)見到過的最大的輪數(shù)s都大;
[0026](2)所述其他節(jié)點(diǎn)中收到申請(qǐng)請(qǐng)求后,所述其他節(jié)點(diǎn)分別更新所述其他節(jié)點(diǎn)收到過的申請(qǐng)請(qǐng)求中全局節(jié)點(diǎn)標(biāo)識(shí)符最小的節(jié)點(diǎn),并向申請(qǐng)成為初始第一節(jié)點(diǎn)回復(fù)見到過的最大的輪數(shù)S,以及申請(qǐng)請(qǐng)求中全局節(jié)點(diǎn)標(biāo)識(shí)符最小的節(jié)點(diǎn),并更新所述其他節(jié)點(diǎn)分別見到過的申請(qǐng)請(qǐng)求中的最
當(dāng)前第1頁(yè)1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1