一種paxos實(shí)例更新方法、設(shè)備及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種paxos實(shí)例更新方法,所述方法包括:提案節(jié)點(diǎn)在接收到方案更新請(qǐng)求后,直接執(zhí)行paxos實(shí)例更新的準(zhǔn)備過程,確定序列號(hào),并在所述準(zhǔn)備過程中從各批準(zhǔn)節(jié)點(diǎn)上獲取當(dāng)前方案的狀態(tài)信息,所述當(dāng)前方案的狀態(tài)信息包括:當(dāng)前方案下已批準(zhǔn)paxos實(shí)例的實(shí)例ID、值和序列號(hào);提案節(jié)點(diǎn)根據(jù)當(dāng)前方案的狀態(tài)信息,得到需更新paxos實(shí)例的實(shí)例ID,并以所述實(shí)例ID和所述準(zhǔn)備過程確定的序列號(hào)執(zhí)行所述需更新paxos實(shí)例的批準(zhǔn)過程。相應(yīng)的,本發(fā)明還公開了一種用于paxos實(shí)例更新的設(shè)備及系統(tǒng),將paxos算法中的學(xué)習(xí)過程融合到準(zhǔn)備過程中,簡(jiǎn)化了paxos算法的執(zhí)行過程,提高了paxos算法的執(zhí)行效率,解決了現(xiàn)有paxos算法執(zhí)行效率低的問題。
【專利說明】一種paxos實(shí)例更新方法、設(shè)備及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及分布式計(jì)算領(lǐng)域,特別涉及一種paxos實(shí)例更新方法、設(shè)備及系統(tǒng)。
【背景技術(shù)】
[0002]分布式計(jì)算系統(tǒng)中各節(jié)點(diǎn)之間的配合動(dòng)作為用戶提供更加可靠的數(shù)據(jù)和可計(jì)算資源的訪問。分布式計(jì)算系統(tǒng)中每個(gè)節(jié)點(diǎn)執(zhí)行相同的任務(wù)并儲(chǔ)存相同的信息,因而分布式計(jì)算系統(tǒng)常不可避免的會(huì)產(chǎn)生如下錯(cuò)誤:進(jìn)程慢、重啟以及消息延遲、消息丟失、消息重復(fù)
坐寸ο
[0003]為保證分布式計(jì)算系統(tǒng)中每個(gè)節(jié)點(diǎn)執(zhí)行相同的命令,需要在每一條指令上執(zhí)行一個(gè)“一致性算法”。paxos算法就是一種應(yīng)用于分布式計(jì)算系統(tǒng)的“一致性算法”。在paxos算法中,如果進(jìn)行一次所有副本上的數(shù)據(jù)更新操作,首選需要一個(gè)學(xué)習(xí)(Iearn)過程來(lái)確定是針對(duì)哪個(gè)paxos實(shí)例,再進(jìn)行一個(gè)準(zhǔn)備(prepare)過程以獲得批準(zhǔn)(accept)的請(qǐng)求權(quán)利及執(zhí)行批準(zhǔn)過程所需要的序列號(hào),最后執(zhí)行一個(gè)批準(zhǔn)過程,過程復(fù)雜,涉及場(chǎng)景多,因此,執(zhí)行效率低,不能用于高負(fù)載、高并發(fā)的應(yīng)用場(chǎng)景。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供一種paxos實(shí)例更新方法、設(shè)備及系統(tǒng),以解決現(xiàn)有paxos算法執(zhí)行效率低的問題。
[0005]本發(fā)明提供了一種paxos實(shí)例更新方法,所述方法包括:
[0006]提案節(jié)點(diǎn)在接收到方案更新請(qǐng)求后,執(zhí)行paxos實(shí)例更新的準(zhǔn)備過程,確定序列號(hào),并在所述準(zhǔn)備過程中從各批準(zhǔn)節(jié)點(diǎn)上獲取當(dāng)前方案的狀態(tài)信息,所述當(dāng)前方案的狀態(tài)信息包括:當(dāng)前方案下已批準(zhǔn)paxos實(shí)例的實(shí)例ID、值和序列號(hào);
[0007]提案節(jié)點(diǎn)根據(jù)當(dāng)前方案的狀態(tài)信息,得到需更新paxos實(shí)例的實(shí)例ID,并以所述實(shí)例ID和所述準(zhǔn)備過程確定的序列號(hào)執(zhí)行所述需更新paxos實(shí)例的批準(zhǔn)過程,實(shí)現(xiàn)所述需更新paxos實(shí)例的更新。
[0008]在上述方案中,所述執(zhí)行paxos實(shí)例更新的準(zhǔn)備過程,確定序列號(hào),并在所述準(zhǔn)備過程中從各批準(zhǔn)節(jié)點(diǎn)上獲取當(dāng)前方案的狀態(tài)信息,包括:
[0009]提案節(jié)點(diǎn)計(jì)算序列號(hào),并以所述序列號(hào)向所有的批準(zhǔn)節(jié)點(diǎn)發(fā)起準(zhǔn)備請(qǐng)求;
[0010]所述提案節(jié)點(diǎn)接收各所述批準(zhǔn)節(jié)點(diǎn)返回的應(yīng)答,判斷接受所述準(zhǔn)備請(qǐng)求的批準(zhǔn)節(jié)點(diǎn)個(gè)數(shù)是否滿足多數(shù)派要求,如果是,確定執(zhí)行所述需更新paxos實(shí)例的批準(zhǔn)過程時(shí)采用所述準(zhǔn)備請(qǐng)求中包含的序列號(hào),并從所述應(yīng)答中提取當(dāng)前方案的狀態(tài)信息;其中,各所述批準(zhǔn)節(jié)點(diǎn)接收提案節(jié)點(diǎn)發(fā)起的準(zhǔn)備請(qǐng)求,無(wú)論是否接受所述準(zhǔn)備請(qǐng)求,都向所述提案節(jié)點(diǎn)返回應(yīng)答,所述應(yīng)答中包含當(dāng)前方案的狀態(tài)信息。
[0011]在上述方案中,所述方法還包括:當(dāng)接受所述準(zhǔn)備請(qǐng)求的批準(zhǔn)節(jié)點(diǎn)個(gè)數(shù)不滿足多數(shù)派要求時(shí),重新執(zhí)行所述需更新paxos實(shí)例的準(zhǔn)備過程。
[0012]在上述方案中,所述批準(zhǔn)節(jié)點(diǎn)接收提案節(jié)點(diǎn)發(fā)起的準(zhǔn)備請(qǐng)求之后,所述方法還包括:所述批準(zhǔn)節(jié)點(diǎn)根據(jù)所述準(zhǔn)備請(qǐng)求中的序列號(hào),驗(yàn)證是否接受所述準(zhǔn)備請(qǐng)求,接受則返回表示同意的所述應(yīng)答,不接受則返回表示拒絕的所述應(yīng)答。
[0013]在上述方案中,所述判斷接受所述準(zhǔn)備請(qǐng)求的批準(zhǔn)節(jié)點(diǎn)個(gè)數(shù)是否滿足多數(shù)派要求具體為:判斷接收到的表示同意的所述應(yīng)答個(gè)數(shù)是否滿足多數(shù)派要求,是則表示接受所述準(zhǔn)備請(qǐng)求的批準(zhǔn)節(jié)點(diǎn)個(gè)數(shù)滿足多數(shù)派要求,否則表示接受所述準(zhǔn)備請(qǐng)求的批準(zhǔn)節(jié)點(diǎn)個(gè)數(shù)不滿足多數(shù)派要求。
[0014]本發(fā)明還提供了一種用于paxos實(shí)例更新的設(shè)備,所述設(shè)備包括:準(zhǔn)備單元和批準(zhǔn)單元;其中,
[0015]準(zhǔn)備單元,用于在接收到方案更新請(qǐng)求后,執(zhí)行paxos實(shí)例更新的準(zhǔn)備過程,確定序列號(hào),并在所述準(zhǔn)備過程中從各批準(zhǔn)節(jié)點(diǎn)上獲取當(dāng)前方案的狀態(tài)信息,所述當(dāng)前方案的狀態(tài)信息包括:當(dāng)前方案下已批準(zhǔn)paxos實(shí)例的實(shí)例ID、值和序列號(hào);
[0016]批準(zhǔn)單元,用于根據(jù)所述準(zhǔn)備單元獲取的當(dāng)前方案的狀態(tài)信息,得到需更新paxos實(shí)例的實(shí)例ID,并以所述實(shí)例ID和所述準(zhǔn)備單元確定的序列號(hào)執(zhí)行所述需更新paxos實(shí)例的批準(zhǔn)過程,實(shí)現(xiàn)所述需更新paxos實(shí)例的更新。
[0017]在上述方案中,所述準(zhǔn)備單元,用于計(jì)算序列號(hào),以所述序列號(hào)向所有的批準(zhǔn)節(jié)點(diǎn)發(fā)起準(zhǔn)備請(qǐng)求,接收各所述批準(zhǔn)節(jié)點(diǎn)返回的應(yīng)答,判斷接受所述準(zhǔn)備請(qǐng)求的批準(zhǔn)節(jié)點(diǎn)個(gè)數(shù)是否滿足多數(shù)派要求,如果是,確定所述批準(zhǔn)單元執(zhí)行所述需更新paxos實(shí)例的批準(zhǔn)過程時(shí)采用所述準(zhǔn)備請(qǐng)求中包含的序列號(hào),并從所述應(yīng)答中提取當(dāng)前方案的狀態(tài)信息。
[0018]在上述方案中,所述準(zhǔn)備單元,還用于在判斷接受所述準(zhǔn)備請(qǐng)求的批準(zhǔn)節(jié)點(diǎn)個(gè)數(shù)不滿足多數(shù)派要求時(shí),重新執(zhí)行所述需更新paxos實(shí)例的準(zhǔn)備過程。
[0019]本發(fā)明還提供了一種分布式計(jì)算系統(tǒng),所述系統(tǒng)包括:上述用于paxos實(shí)例更新的設(shè)備和至少兩個(gè)批準(zhǔn)節(jié)點(diǎn);
[0020]所述批準(zhǔn)節(jié)點(diǎn),用于接收所述用于paxos實(shí)例更新的設(shè)備發(fā)起的準(zhǔn)備請(qǐng)求,無(wú)論是否接受所述準(zhǔn)備請(qǐng)求,都向所述用于paxos實(shí)例更新的設(shè)備返回應(yīng)答,所述應(yīng)答中包含當(dāng)前方案的狀態(tài)信息。
[0021 ] 在上述方案中,所述批準(zhǔn)節(jié)點(diǎn),還用于根據(jù)所述準(zhǔn)備請(qǐng)求中的序列號(hào),驗(yàn)證是否接受所述準(zhǔn)備請(qǐng)求,接受則返回表示同意的所述應(yīng)答,不接受則返回表示拒絕的所述應(yīng)答。
[0022]本發(fā)明實(shí)施例的有益效果是:在準(zhǔn)備過程中,批準(zhǔn)節(jié)點(diǎn)返回包含當(dāng)前方案狀態(tài)信息的應(yīng)答,使得提案節(jié)點(diǎn)可以在準(zhǔn)備過程中基于該應(yīng)答中當(dāng)前方案的狀態(tài)信息進(jìn)行學(xué)習(xí),將paxos算法中的學(xué)習(xí)過程融合到準(zhǔn)備過程中,簡(jiǎn)化了 paxos算法的執(zhí)行過程,提高了paxos算法的執(zhí)行效率,解決了現(xiàn)有paxos算法執(zhí)行效率低的問題。
【專利附圖】
【附圖說明】
[0023]圖1為本發(fā)明實(shí)施例paxos實(shí)例更新方法的實(shí)現(xiàn)流程圖;
[0024]圖2為本發(fā)明實(shí)施例中paxos實(shí)例更新過程的具體實(shí)現(xiàn)流程圖;
[0025]圖3為本發(fā)明實(shí)施例用于paxos實(shí)例更新的設(shè)備的組成結(jié)構(gòu)示意圖;
[0026]圖4為本發(fā)明實(shí)施例分布式計(jì)算系統(tǒng)一種示例性組成結(jié)構(gòu)示意圖。
【具體實(shí)施方式】[0027]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0028]paxos算法需要三類節(jié)點(diǎn)來(lái)完成:提案節(jié)點(diǎn)(Proposer)、批準(zhǔn)節(jié)點(diǎn)(Acceptor)和學(xué)習(xí)節(jié)點(diǎn)(Learner),其中,學(xué)習(xí)節(jié)點(diǎn)和提案節(jié)點(diǎn)可以是同一個(gè)節(jié)點(diǎn),批準(zhǔn)節(jié)點(diǎn)需要至少有兩個(gè)。
[0029]Paxos算法中,提案節(jié)點(diǎn)向批準(zhǔn)節(jié)點(diǎn)提出值(value),即發(fā)起一個(gè)paxos實(shí)例的更新,如果多數(shù)派批準(zhǔn)節(jié)點(diǎn)接受所述paxos實(shí)例的更新,則批準(zhǔn)所述paxos實(shí)例的更新,執(zhí)行相應(yīng)的更新操作,如果接受所述paxos實(shí)例更新的批準(zhǔn)節(jié)點(diǎn)數(shù)目不滿足多數(shù)派要求,則不批準(zhǔn)所述paxos實(shí)例的更新,返回重新執(zhí)行所述paxos實(shí)例的更新。在paxos實(shí)例的更新被批準(zhǔn)后,學(xué)習(xí)節(jié)點(diǎn)或提案節(jié)點(diǎn)可以向各批準(zhǔn)節(jié)點(diǎn)學(xué)習(xí)已批準(zhǔn)paxos實(shí)例的相關(guān)信息。
[0030]一個(gè)paxos實(shí)例的更新是指一次完整的將某個(gè)值更新到分布式計(jì)算系統(tǒng)所有節(jié)點(diǎn)上的過程。在分布式計(jì)算系統(tǒng)將當(dāng)前paxos實(shí)例的更新操作執(zhí)行成功后,提案節(jié)點(diǎn)接收到客戶端發(fā)起的方案更新請(qǐng)求,便開始執(zhí)行下一個(gè)paxos實(shí)例的更新,向所有批準(zhǔn)節(jié)點(diǎn)發(fā)起下一個(gè)paxos實(shí)例的更新,在下一個(gè)paxos實(shí)例的更新被多數(shù)派批準(zhǔn)節(jié)點(diǎn)接受時(shí),則批準(zhǔn)下一個(gè)paxos實(shí)例的更新,執(zhí)行相應(yīng)的更新操作。
[0031]paxos算法中,一個(gè)提案節(jié)點(diǎn)完成一個(gè)paxos實(shí)例的更新一般需要有三個(gè)過程:學(xué)習(xí)過程、準(zhǔn)備過程和批準(zhǔn)過程。
[0032]其中,學(xué)習(xí)過程中,提案節(jié)點(diǎn)通過向所有的批準(zhǔn)節(jié)點(diǎn)發(fā)起學(xué)習(xí)請(qǐng)求,獲取多數(shù)派批準(zhǔn)節(jié)點(diǎn)已批準(zhǔn)paxos實(shí)例的實(shí)例信息,如已批準(zhǔn)paxos實(shí)例的實(shí)例ID、被批準(zhǔn)的值和成功使用的序列號(hào)等。然后,提案節(jié)點(diǎn)根據(jù)已批準(zhǔn)paxos實(shí)例的實(shí)例信息,得到下一個(gè)paxos實(shí)例更新所需的實(shí)例ID,其中下一個(gè)paxos實(shí)例為待批準(zhǔn)進(jìn)行更新的實(shí)例;
[0033]準(zhǔn)備過程中,提案節(jié)點(diǎn)首先計(jì)算該下一個(gè)paxos實(shí)例更新所需的序列號(hào),再基于計(jì)算得到的序列號(hào)和學(xué)習(xí)過程中得到的實(shí)例ID向所有的批準(zhǔn)節(jié)點(diǎn)發(fā)起準(zhǔn)備請(qǐng)求,如果所述準(zhǔn)備請(qǐng)求被多數(shù)派批準(zhǔn)節(jié)點(diǎn)所接受,則提案節(jié)點(diǎn)將以所述準(zhǔn)備請(qǐng)求中包含的序列號(hào)進(jìn)行后續(xù)的批準(zhǔn)過程。
[0034]批準(zhǔn)過程中,提案節(jié)點(diǎn)以準(zhǔn)備過程中確定的序列號(hào)和學(xué)習(xí)過程中得到的實(shí)例ID發(fā)起批準(zhǔn)請(qǐng)求,該批準(zhǔn)請(qǐng)求中還包含提案節(jié)點(diǎn)提出的值(即該下一個(gè)paxos實(shí)例的值),如果多數(shù)派批準(zhǔn)節(jié)點(diǎn)接受所述批準(zhǔn)請(qǐng)求,則批準(zhǔn)該下一個(gè)paxos實(shí)例的更新,執(zhí)行相應(yīng)的更新操作,一次paxos實(shí)例的更新過程結(jié)束。
[0035]本發(fā)明實(shí)施例提供一種paxos實(shí)例更新方法、設(shè)備及系統(tǒng),以簡(jiǎn)化paxos算法,提高其執(zhí)行效率。
[0036]參照?qǐng)D1所示,本發(fā)明實(shí)施例提供的paxos實(shí)例更新方法主要可以包括如下步驟:
[0037]步驟101:提案節(jié)點(diǎn)在接收到方案更新請(qǐng)求后,執(zhí)行paxos實(shí)例更新的準(zhǔn)備過程,確定序列號(hào),并在所述準(zhǔn)備過程中從各批準(zhǔn)節(jié)點(diǎn)上獲取當(dāng)前方案的狀態(tài)信息;
[0038]其中,所述當(dāng)前方案的狀態(tài)信息可以包括:當(dāng)前方案下已批準(zhǔn)paxos實(shí)例的實(shí)例ID、值和序列號(hào);
[0039]步驟102:提案節(jié)點(diǎn)根據(jù)當(dāng)前方案的狀態(tài)信息,得到需更新paxos實(shí)例的實(shí)例ID,并以所述實(shí)例ID和所述準(zhǔn)備過程確定的序列號(hào)執(zhí)行所述需更新paxos實(shí)例的批準(zhǔn)過程,實(shí)現(xiàn)所述需更新paxos實(shí)例的更新。
[0040]在本發(fā)明實(shí)施例所提供的方法中,提案節(jié)點(diǎn)在接收到客戶端的更新請(qǐng)求后,直接開始準(zhǔn)備過程,即計(jì)算序列號(hào)并以該序列號(hào)向所有批準(zhǔn)節(jié)點(diǎn)發(fā)起準(zhǔn)備請(qǐng)求,批準(zhǔn)節(jié)點(diǎn)在接收到所述準(zhǔn)備請(qǐng)求后,無(wú)論是否接受所述準(zhǔn)備請(qǐng)求都返回應(yīng)答給所述提案節(jié)點(diǎn),所述應(yīng)答中包含當(dāng)前方案的狀態(tài)信息,這樣,提案節(jié)點(diǎn)可以根據(jù)各批準(zhǔn)節(jié)點(diǎn)返回的應(yīng)答學(xué)習(xí)到當(dāng)前方案的狀態(tài)信息,獲得與學(xué)習(xí)過程一樣的信息,不需要在發(fā)起準(zhǔn)備過程之前單獨(dú)進(jìn)行學(xué)習(xí)過程,將學(xué)習(xí)過程融合到了準(zhǔn)備過程中,簡(jiǎn)化了 paxos算法,提高了 paxos算法的執(zhí)行效率。
[0041]如圖2所示,本發(fā)明實(shí)施例中paxos實(shí)例更新過程的具體實(shí)現(xiàn)流程可以包括如下步驟:
[0042]步驟201:提案節(jié)點(diǎn)接收到客戶端發(fā)起的方案更新請(qǐng)求,開始執(zhí)行paxos實(shí)例更新;
[0043]步驟202:提案節(jié)點(diǎn)開始所述paxos實(shí)例更新的準(zhǔn)備過程,計(jì)算得到序列號(hào)SN1,并以所述序列號(hào)SNl向所有批準(zhǔn)節(jié)點(diǎn)發(fā)起準(zhǔn)備請(qǐng)求;
[0044]實(shí)際應(yīng)用中,提案節(jié)點(diǎn)發(fā)起的不同準(zhǔn)備請(qǐng)求所采用的序列號(hào)是不同的。也就是說,每次準(zhǔn)備請(qǐng)求所包含的序列號(hào)都是不同的。
[0045]對(duì)于同一 paxos實(shí)例的準(zhǔn)備過程,可以采用公式⑴的方法計(jì)算得到序列號(hào)SN。
[0046]SN = MXN+n(1)
[0047]其中,SN為序列號(hào),M為所述paxos實(shí)例更新的序列號(hào)計(jì)算輪次,N為提案節(jié)點(diǎn)總數(shù),η為當(dāng)前提案節(jié)點(diǎn)的編號(hào)。如果當(dāng)前分布式計(jì)算系統(tǒng)中包含有10個(gè)提案節(jié)點(diǎn),當(dāng)前提案節(jié)點(diǎn)的編號(hào)為5,當(dāng)前paxos下序列號(hào)計(jì)算的輪次為第一次即M=O,則所述paxos實(shí)例更新的序列號(hào)SN為5。
[0048]步驟203:各批準(zhǔn)節(jié)點(diǎn)接收所述準(zhǔn)備請(qǐng)求,并向提案節(jié)點(diǎn)返回應(yīng)答,所述應(yīng)答中均包含當(dāng)前方案的狀態(tài)信息;
[0049]具體的,批準(zhǔn)節(jié)點(diǎn)判斷是否接受所述準(zhǔn)備請(qǐng)求,如果接受,則向所述提案節(jié)點(diǎn)返回表示同意的應(yīng)答;如果不接受,則向所述提案節(jié)點(diǎn)返回表示拒絕的應(yīng)答。
[0050]具體的,當(dāng)前方案的狀態(tài)信息可以包括批準(zhǔn)節(jié)點(diǎn)上對(duì)于當(dāng)前方案已批準(zhǔn)的paxos實(shí)例的實(shí)例ID和值以及所述paxos實(shí)例更新被批準(zhǔn)時(shí)的序列號(hào)。這里,如果批準(zhǔn)節(jié)點(diǎn)在所述paxos實(shí)例更新之前沒有進(jìn)行過當(dāng)前方案下的批準(zhǔn),則向提案節(jié)點(diǎn)返回的當(dāng)前方案狀態(tài)信息中已批準(zhǔn)paxos實(shí)例的實(shí)例ID為零、值為空(null)和序列號(hào)為-1。
[0051]實(shí)際應(yīng)用中,一個(gè)paxos實(shí)例的值可以是任何操作指令,例如,一個(gè)paxos實(shí)例的值可以是“修改某個(gè)變量的值為某個(gè)值”、“設(shè)置當(dāng)前節(jié)點(diǎn)為主節(jié)點(diǎn)”等等。
[0052]實(shí)際應(yīng)用中,批準(zhǔn)節(jié)點(diǎn)接收所述準(zhǔn)備請(qǐng)求,判斷所述準(zhǔn)備請(qǐng)求中的序列號(hào)SNl是否大于同一 paxos實(shí)例下上次回復(fù)過的準(zhǔn)備請(qǐng)求中的序列號(hào),如果是,則接受所述準(zhǔn)備請(qǐng)求,如果不是,則不接受所述準(zhǔn)備請(qǐng)求。
[0053]步驟204:提案節(jié)點(diǎn)接收各批準(zhǔn)節(jié)點(diǎn)返回的應(yīng)答,如果表示同意的應(yīng)答個(gè)數(shù)滿足多數(shù)派要求,則繼續(xù)步驟205,否則返回步驟202 ;
[0054]步驟205:提案節(jié)點(diǎn)從所述應(yīng)答中提取當(dāng)前方案的狀態(tài)信息,并根據(jù)當(dāng)前方案的狀態(tài)息得到需更新paxos實(shí)例的實(shí)例IDl ;
[0055]具體的,提案節(jié)點(diǎn)可以依據(jù)當(dāng)前方案的狀態(tài)信息即當(dāng)前方案下已批準(zhǔn)paxos實(shí)例的實(shí)例ID和值,采用預(yù)先約定的算法計(jì)算得到當(dāng)前方案下的所述需更新paxos實(shí)例的實(shí)例皿。
[0056]對(duì)于所述需更新paxos實(shí)例的實(shí)例IDl,可以由同一方案下上一個(gè)paxos實(shí)例的實(shí)例ID加I得到。例如,同一方案下上一個(gè)paxos實(shí)例的實(shí)例ID為2,那么所述需更新paxos實(shí)例的實(shí)例ID就為3。
[0057]步驟206:提案節(jié)點(diǎn)以序列號(hào)SNl、實(shí)例IDl向所有批準(zhǔn)節(jié)點(diǎn)發(fā)起批準(zhǔn)請(qǐng)求;
[0058]這里,所述批準(zhǔn)請(qǐng)求中還可以包含所述paxos實(shí)例的值。具體的,可以采用paxos算法中已有的相關(guān)方法所述paxos實(shí)例的值。例如,可以根據(jù)客戶端發(fā)起的方案更新請(qǐng)求得到,也可以根據(jù)已批準(zhǔn)paxos實(shí)例的值得到。
[0059]步驟207:各批準(zhǔn)節(jié)點(diǎn)接收所述批準(zhǔn)請(qǐng)求,判斷是否接受所述批準(zhǔn)請(qǐng)求,如果是,則批準(zhǔn)所述paxos實(shí)例的更新,執(zhí)行當(dāng)前方案的更新,并向所述提案節(jié)點(diǎn)返回同意應(yīng)答,否貝U,拒絕所述提案節(jié)點(diǎn)的批準(zhǔn)請(qǐng)求;
[0060]實(shí)際應(yīng)用中,批準(zhǔn)節(jié)點(diǎn)接收所述批準(zhǔn)請(qǐng)求,判斷所述批準(zhǔn)請(qǐng)求中的序列號(hào)SNl是否大于同一 paxos實(shí)例下上次回復(fù)過的準(zhǔn)備請(qǐng)求中的序列號(hào),如果是,則接受所述批準(zhǔn)請(qǐng)求,向提案節(jié)點(diǎn)返回OK消息,如果不是,則忽略所述準(zhǔn)備請(qǐng)求,不向提案節(jié)點(diǎn)返回任何消
肩、O
[0061]步驟208:提案節(jié)點(diǎn)接收各批準(zhǔn)節(jié)點(diǎn)返回的同意應(yīng)答,判斷所述同意應(yīng)答的個(gè)數(shù)是否滿足多數(shù)派要求,如果是,則確認(rèn)所述需更新paxos實(shí)例的更新已被批準(zhǔn),繼續(xù)步驟209,否則返回步驟202 ;
[0062]步驟209:當(dāng)前方案更新成功,流程結(jié)束。
[0063]其中,所述多數(shù)派要求可以根據(jù)實(shí)際應(yīng)用的需要去設(shè)置,例如,多數(shù)派要求可以是超過半數(shù),或者可以是超過總數(shù)的四分之三等等。一般情況下,多數(shù)派要求采用超過半數(shù)的設(shè)置。
[0064]本發(fā)明實(shí)施例中,提案節(jié)點(diǎn)可以根據(jù)各批準(zhǔn)節(jié)點(diǎn)返回的應(yīng)答學(xué)習(xí)到當(dāng)前方案的狀態(tài)信息,獲得與學(xué)習(xí)過程一樣的信息,不需要在發(fā)起準(zhǔn)備過程之前單獨(dú)進(jìn)行學(xué)習(xí)過程,將學(xué)習(xí)過程融合到了準(zhǔn)備過程中,簡(jiǎn)化了 paxos算法,提高了 paxos算法的執(zhí)行效率。
[0065]本發(fā)明實(shí)施例還提供了一種用于paxos實(shí)例更新的設(shè)備,如圖3所示,所述用于paxos實(shí)例更新的設(shè)備可以包括:準(zhǔn)備單元31和批準(zhǔn)單元32 ;其中,
[0066]準(zhǔn)備單元31,用于在接收到方案更新請(qǐng)求后,執(zhí)行paxos實(shí)例更新的準(zhǔn)備過程,確定序列號(hào),并在所述準(zhǔn)備過程中從各批準(zhǔn)節(jié)點(diǎn)上獲取當(dāng)前方案的狀態(tài)信息;
[0067]這里,所述當(dāng)前方案的狀態(tài)信息包括:當(dāng)前方案下已批準(zhǔn)paxos實(shí)例的實(shí)例ID、值和序列號(hào);
[0068]批準(zhǔn)單元32,用于根據(jù)所述準(zhǔn)備單元31獲取的當(dāng)前方案的狀態(tài)信息,得到需更新paxos實(shí)例的實(shí)例ID,并以所述實(shí)例ID和所述準(zhǔn)備單元31確定的序列號(hào)執(zhí)行所述需更新paxos實(shí)例的批準(zhǔn)過程,實(shí)現(xiàn)所述需更新paxos實(shí)例的更新。
[0069]具體的,所述準(zhǔn)備單元31,用于計(jì)算序列號(hào),以所述序列號(hào)向所有的批準(zhǔn)節(jié)點(diǎn)發(fā)起準(zhǔn)備請(qǐng)求,接收各所述批準(zhǔn)節(jié)點(diǎn)返回的應(yīng)答,判斷接受所述準(zhǔn)備請(qǐng)求的批準(zhǔn)節(jié)點(diǎn)個(gè)數(shù)是否滿足多數(shù)派要求,如果是,確定所述批準(zhǔn)單元執(zhí)行所述需更新paxos實(shí)例的批準(zhǔn)過程時(shí)采用所述準(zhǔn)備請(qǐng)求中包含的序列號(hào),并從所述應(yīng)答中提取當(dāng)前方案的狀態(tài)信息。[0070]這里,所述準(zhǔn)備單元31,還用于在判斷接受所述準(zhǔn)備請(qǐng)求的批準(zhǔn)節(jié)點(diǎn)個(gè)數(shù)不滿足多數(shù)派要求時(shí),重新執(zhí)行所述需更新paxos實(shí)例的準(zhǔn)備過程。
[0071]本發(fā)明實(shí)施例中,用于paxos實(shí)例更新的設(shè)備通過其準(zhǔn)備單元獲得與paxos算法中學(xué)習(xí)過程一樣的信息,不需要再單獨(dú)設(shè)置實(shí)現(xiàn)學(xué)習(xí)過程的學(xué)習(xí)單元,由準(zhǔn)備單元將學(xué)習(xí)過程融合到了準(zhǔn)備過程中,簡(jiǎn)化了 paxos算法,提高了 paxos算法的執(zhí)行效率。
[0072]本發(fā)明實(shí)施例提供了一種分布式計(jì)算系統(tǒng),該分布式計(jì)算系統(tǒng)包含有上述實(shí)例三所述用于paxos實(shí)例更新的設(shè)備和至少兩個(gè)批準(zhǔn)節(jié)點(diǎn);其中,所述批準(zhǔn)節(jié)點(diǎn),用于接收所述用于paxos實(shí)例更新的設(shè)備發(fā)起的準(zhǔn)備請(qǐng)求,無(wú)論是否接受所述準(zhǔn)備請(qǐng)求,都向所述用于paxos實(shí)例更新的設(shè)備返回應(yīng)答,所述應(yīng)答中包含當(dāng)前方案的狀態(tài)信息。所述當(dāng)前方案的狀態(tài)信息包括:當(dāng)前方案下已批準(zhǔn)實(shí)例的實(shí)例ID、值和序列號(hào)。
[0073]具體的,所述批準(zhǔn)節(jié)點(diǎn),還用于根據(jù)所述準(zhǔn)備請(qǐng)求中的序列號(hào),驗(yàn)證是否接受所述準(zhǔn)備請(qǐng)求,接受則返回表示同意的所述應(yīng)答,不接受則返回表示拒絕的所述應(yīng)答。
[0074]實(shí)際應(yīng)用中,所述分布式計(jì)算系統(tǒng)主要可以包括:至少一個(gè)提案節(jié)點(diǎn)和至少兩個(gè)批準(zhǔn)節(jié)點(diǎn),其中,提案節(jié)點(diǎn)與各批準(zhǔn)節(jié)點(diǎn)之間交互能夠?qū)崿F(xiàn)paxos算法,所述提案節(jié)點(diǎn)即為上述用于paxos實(shí)例更新的設(shè)備。
[0075]提案節(jié)點(diǎn)和批準(zhǔn)節(jié)點(diǎn)可以是計(jì)算機(jī)、移動(dòng)設(shè)備或者類似的其他設(shè)備。提案節(jié)點(diǎn)可以有一個(gè),也可以是兩個(gè)或者多個(gè),每個(gè)提案節(jié)點(diǎn)都可以發(fā)起paxos實(shí)例更新,并且各提案節(jié)點(diǎn)所發(fā)起paxos實(shí)例的值可以相同,也可以是矛盾的。各批準(zhǔn)節(jié)點(diǎn)之間是完全對(duì)等獨(dú)立的。
[0076]參見圖4,為本發(fā)明實(shí)施例中所述分布式計(jì)算系統(tǒng)的一種示例,該示例包括一個(gè)提案節(jié)點(diǎn)41和四個(gè)批準(zhǔn)節(jié)點(diǎn)42。
[0077]在本發(fā)明實(shí)施例所提供的分布式計(jì)算系統(tǒng)中,提案節(jié)點(diǎn)在接收到客戶端的更新請(qǐng)求后,直接開始準(zhǔn)備過程,即計(jì)算序列號(hào)并以該序列號(hào)向所有批準(zhǔn)節(jié)點(diǎn)發(fā)起準(zhǔn)備請(qǐng)求,批準(zhǔn)節(jié)點(diǎn)在接收到所述準(zhǔn)備請(qǐng)求后,無(wú)論是否接受所述準(zhǔn)備請(qǐng)求都返回應(yīng)答給所述提案節(jié)點(diǎn),所述應(yīng)答中包含當(dāng)前方案的狀態(tài)信息,這樣,提案節(jié)點(diǎn)可以根據(jù)各批準(zhǔn)節(jié)點(diǎn)返回的應(yīng)答學(xué)習(xí)到當(dāng)前方案的狀態(tài)信息,獲得與學(xué)習(xí)過程一樣的信息,不需要在發(fā)起準(zhǔn)備過程之前單獨(dú)進(jìn)行學(xué)習(xí)過程,將學(xué)習(xí)過程融合到了準(zhǔn)備過程中,簡(jiǎn)化了 paxos算法,提高了 paxos算法的執(zhí)行效率。
[0078]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種paxos實(shí)例更新方法,其特征在于,所述方法包括: 提案節(jié)點(diǎn)在接收到方案更新請(qǐng)求后,執(zhí)行paxos實(shí)例更新的準(zhǔn)備過程,確定序列號(hào),并在所述準(zhǔn)備過程中從各批準(zhǔn)節(jié)點(diǎn)上獲取當(dāng)前方案的狀態(tài)信息,所述當(dāng)前方案的狀態(tài)信息包括:當(dāng)前方案下已批準(zhǔn)paxos實(shí)例的實(shí)例ID、值和序列號(hào); 提案節(jié)點(diǎn)根據(jù)當(dāng)前方案的狀態(tài)信息,得到需更新paxos實(shí)例的實(shí)例ID,并以所述實(shí)例ID和所述準(zhǔn)備過程確定的序列號(hào)執(zhí)行所述需更新paxos實(shí)例的批準(zhǔn)過程,實(shí)現(xiàn)所述需更新paxos實(shí)例的更新。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述執(zhí)行paxos實(shí)例更新的準(zhǔn)備過程,確定序列號(hào),并在所述準(zhǔn)備過程中從各批準(zhǔn)節(jié)點(diǎn)上獲取當(dāng)前方案的狀態(tài)信息,包括: 提案節(jié)點(diǎn)計(jì)算序列號(hào),并以所述序列號(hào)向所有的批準(zhǔn)節(jié)點(diǎn)發(fā)起準(zhǔn)備請(qǐng)求; 所述提案節(jié)點(diǎn)接收各所述批準(zhǔn)節(jié)點(diǎn)返回的應(yīng)答,判斷接受所述準(zhǔn)備請(qǐng)求的批準(zhǔn)節(jié)點(diǎn)個(gè)數(shù)是否滿足多數(shù)派要求,如果是,確定執(zhí)行所述需更新paxos實(shí)例的批準(zhǔn)過程時(shí)采用所述準(zhǔn)備請(qǐng)求中包含的序列號(hào),并從所述應(yīng)答中提取當(dāng)前方案的狀態(tài)信息;其中,各所述批準(zhǔn)節(jié)點(diǎn)接收提案節(jié)點(diǎn)發(fā)起的準(zhǔn)備請(qǐng)求,無(wú)論是否接受所述準(zhǔn)備請(qǐng)求,都向所述提案節(jié)點(diǎn)返回應(yīng)答,所述應(yīng)答中包含當(dāng)前方案的狀態(tài)信息。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括:當(dāng)接受所述準(zhǔn)備請(qǐng)求的批準(zhǔn)節(jié)點(diǎn)個(gè)數(shù)不滿足多數(shù)派要求時(shí),重新執(zhí)行所述需更新paxos實(shí)例的準(zhǔn)備過程。
4.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,所述批準(zhǔn)節(jié)點(diǎn)接收提案節(jié)點(diǎn)發(fā)起的準(zhǔn)備請(qǐng)求之后,所述方法還包括: 所述批準(zhǔn)節(jié)點(diǎn)根據(jù)所述準(zhǔn)備請(qǐng)求中的序列號(hào),驗(yàn)證是否接受所述準(zhǔn)備請(qǐng)求,接受則返回表示同意的所述應(yīng)答,不接受則返回表示拒絕的所述應(yīng)答。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述判斷接受所述準(zhǔn)備請(qǐng)求的批準(zhǔn)節(jié)點(diǎn)個(gè)數(shù)是否滿足多數(shù)派要求具體為:判斷接收到的表示同意的所述應(yīng)答個(gè)數(shù)是否滿足多數(shù)派要求,是則表示接受所述準(zhǔn)備請(qǐng)求的批準(zhǔn)節(jié)點(diǎn)個(gè)數(shù)滿足多數(shù)派要求,否則表示接受所述準(zhǔn)備請(qǐng)求的批準(zhǔn)節(jié)點(diǎn)個(gè)數(shù)不滿足多數(shù)派要求。
6.一種用于paxos實(shí)例更新的設(shè)備,其特征在于,所述設(shè)備包括:準(zhǔn)備單元和批準(zhǔn)單元;其中, 準(zhǔn)備單元,用于在接收到方案更新請(qǐng)求后,執(zhí)行paxos實(shí)例更新的準(zhǔn)備過程,確定序列號(hào),并在所述準(zhǔn)備過程中從各批準(zhǔn)節(jié)點(diǎn)上獲取當(dāng)前方案的狀態(tài)信息,所述當(dāng)前方案的狀態(tài)信息包括:當(dāng)前方案下已批準(zhǔn)paxos實(shí)例的實(shí)例ID、值和序列號(hào); 批準(zhǔn)單元,用于根據(jù)所述準(zhǔn)備單元獲取的當(dāng)前方案的狀態(tài)信息,得到需更新paxos實(shí)例的實(shí)例ID,并以所述實(shí)例ID和所述準(zhǔn)備單元確定的序列號(hào)執(zhí)行所述需更新paxos實(shí)例的批準(zhǔn)過程,實(shí)現(xiàn)所述需更新paxos實(shí)例的更新。
7.根據(jù)權(quán)利要求6所述用于paxos實(shí)例更新的設(shè)備,其特征在于,所述準(zhǔn)備單元,用于計(jì)算序列號(hào),以所述序列號(hào)向所有的批準(zhǔn)節(jié)點(diǎn)發(fā)起準(zhǔn)備請(qǐng)求,接收各所述批準(zhǔn)節(jié)點(diǎn)返回的應(yīng)答,判斷接受所述準(zhǔn)備請(qǐng)求的批準(zhǔn)節(jié)點(diǎn)個(gè)數(shù)是否滿足多數(shù)派要求,如果是,確定所述批準(zhǔn)單元執(zhí)行所述需更新paxos實(shí)例的批準(zhǔn)過程時(shí)采用所述準(zhǔn)備請(qǐng)求中包含的序列號(hào),并從所述應(yīng)答中提取當(dāng)前方案的狀態(tài)信息。
8.根據(jù)權(quán)利要求7所述用于paxos實(shí)例更新的設(shè)備,其特征在于,所述準(zhǔn)備單元,還用于在接受所述準(zhǔn)備請(qǐng)求的批準(zhǔn)節(jié)點(diǎn)個(gè)數(shù)不滿足多數(shù)派要求時(shí),重新執(zhí)行所述需更新Paxos實(shí)例的準(zhǔn)備過程。
9.一種分布式計(jì)算系統(tǒng),其特征在于,所述系統(tǒng)包括:至少一個(gè)如權(quán)利要求6至8任一項(xiàng)所述用于Paxos實(shí)例更新的設(shè)備和至少兩個(gè)批準(zhǔn)節(jié)點(diǎn); 所述批準(zhǔn)節(jié)點(diǎn),用于接收所述用于paxos實(shí)例更新的設(shè)備發(fā)起的準(zhǔn)備請(qǐng)求,無(wú)論是否接受所述準(zhǔn)備請(qǐng)求,都向所述用于paxos實(shí)例更新的設(shè)備返回應(yīng)答,所述應(yīng)答中包含當(dāng)前方案的狀態(tài)信息。
10.根據(jù)權(quán)利要 求9所述的分布式計(jì)算系統(tǒng),其特征在于,所述批準(zhǔn)節(jié)點(diǎn),還用于根據(jù)所述準(zhǔn)備請(qǐng)求中的序列號(hào),驗(yàn)證是否接受所述準(zhǔn)備請(qǐng)求,接受則返回表示同意的所述應(yīng)答,不接受則返回表示拒絕的所述應(yīng)答。
【文檔編號(hào)】G06F9/445GK103914313SQ201210592761
【公開日】2014年7月9日 申請(qǐng)日期:2012年12月31日 優(yōu)先權(quán)日:2012年12月31日
【發(fā)明者】林謖 申請(qǐng)人:北京新媒傳信科技有限公司