本發(fā)明屬于數(shù)據(jù)處理領(lǐng)域,尤其涉及一種全局邏輯時(shí)鐘同步分布式方法。
背景技術(shù):
數(shù)據(jù)一致性問題是分布式領(lǐng)域的經(jīng)典問題,同時(shí)也是難點(diǎn)問題。以服務(wù)器為中心的服務(wù)模型下,單點(diǎn)故障會(huì)導(dǎo)致服務(wù)器無法對(duì)外提供服務(wù),因此需要引入多臺(tái)服務(wù)器。這樣將會(huì)帶來數(shù)據(jù)一致性問題,因此必須有一個(gè)副本控制協(xié)議來實(shí)現(xiàn)數(shù)據(jù)的一致性。服務(wù)器的服務(wù)能力受其自身網(wǎng)絡(luò)的硬件條件的制約。單臺(tái)服務(wù)器所能對(duì)外提供的服務(wù)能力是有限路數(shù)的,很多是受帶寬、網(wǎng)卡處理能力的影響,這是典型的單點(diǎn)問題。當(dāng)單臺(tái)服務(wù)器達(dá)到服務(wù)能力的上限時(shí),則采用用多臺(tái)服務(wù)器來對(duì)外提供更強(qiáng)的服務(wù)能力。此時(shí)需要解決數(shù)據(jù)的一致性問題。單點(diǎn)問題的解決方案大多是采用備份以及多服務(wù)器,多服務(wù)器意味著多中心的出現(xiàn),多個(gè)中心如何保證數(shù)據(jù)一致性,以及對(duì)外提供更快速的服務(wù)是需首要解決的問題。尤其是互聯(lián)網(wǎng)時(shí)代中的各種交易平臺(tái)(如果多中心沒有一致會(huì)使得業(yè)務(wù)收到影響),達(dá)成一致性所用的時(shí)間將會(huì)影響用戶體驗(yàn)和平臺(tái)的性能。因而,設(shè)計(jì)合理的響應(yīng)時(shí)間的一致性算法對(duì)實(shí)際的應(yīng)用來說是有意義的。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述問題,本發(fā)明提供一種全局邏輯時(shí)鐘同步分布式方法,對(duì)解決數(shù)據(jù)一致性中存在的主要問題進(jìn)行了闡述,只能通過一個(gè)議案問題和通過議案的時(shí)間受議案的長(zhǎng)度影響問題進(jìn)行了研究,結(jié)合議案被服務(wù)器集群過半存儲(chǔ)的前提,對(duì)算法進(jìn)行了改進(jìn)。
本發(fā)明一種全局邏輯時(shí)鐘同步分布式方法是通過以下技術(shù)方案來實(shí)現(xiàn)的:
一種全局邏輯時(shí)鐘同步分布式方法,包括以下幾個(gè)步驟:
步驟1:一連接客戶端執(zhí)行與全局相關(guān)的事件m時(shí),向時(shí)鐘系統(tǒng)申請(qǐng)一個(gè)編碼A;
步驟2:系統(tǒng)執(zhí)行操作的順序是按照給定的邏輯時(shí)鐘編號(hào)進(jìn)行執(zhí)行的,進(jìn)程pi只有執(zhí)行完一條指令,才能提出下一條指令的時(shí)鐘申請(qǐng)。
所述時(shí)鐘系統(tǒng)包括多個(gè)授時(shí)中心,并且采用paxos算法保證多個(gè)授時(shí)中心的一致性。
所述時(shí)鐘系統(tǒng)授時(shí)過程如下:
(a)如果事件a代表了進(jìn)程Pi發(fā)送消息m的事件,那么消息m包含的時(shí)間戳Tm=Ci(a);
(b)在收到消息m后,時(shí)鐘系統(tǒng)會(huì)設(shè)置Cj的值使得它大于等于它的當(dāng)前值并大于Tm。
時(shí)鐘系統(tǒng)還設(shè)置有自主學(xué)習(xí)單元,自主學(xué)習(xí)單元會(huì)使得編號(hào)單調(diào)遞增。
本發(fā)明具有的有益效果:
采用本發(fā)明所述系統(tǒng)使得在有大量請(qǐng)求時(shí)效率更高;并且可以通過修改配置文件來構(gòu)建更大范圍的應(yīng)用。
具體實(shí)施方式
分布式系統(tǒng)中,全局時(shí)鐘需要能對(duì)發(fā)生在系統(tǒng)中的事件進(jìn)行排序。一個(gè)時(shí)鐘要能用于刻畫事件發(fā)生先后順序,且對(duì)于因果序其要滿足的條件:對(duì)于任意事件a,b:如果a->b,那么Cfunction(a)<Cfunction(b)。
Cfunction定義為一個(gè)函數(shù),即為進(jìn)程中的任意事件a分配編號(hào)Cfunction(a)。即:
(1)每個(gè)進(jìn)程Pi在任意連續(xù)的兩個(gè)事件之間會(huì)增加Ci的值;
(2)如果事件a代表了進(jìn)程Pi發(fā)送消息m的事件,那么消息m包含的時(shí)間戳Tm=Ci(a);
(3)在收到消息m后,進(jìn)程Pj會(huì)設(shè)置Cj的值使得它大于等于它的當(dāng)前值并大于Tm。
一種全局邏輯時(shí)鐘同步分布式方法,包括以下幾個(gè)步驟:
步驟1:一連接客戶端執(zhí)行與全局相關(guān)的事件m時(shí),向時(shí)鐘系統(tǒng)申請(qǐng)一個(gè)編碼A;之后才能執(zhí)行,來保證事件m的操作能被其他客戶端收到;
步驟2:系統(tǒng)執(zhí)行操作的順序是按照給定的邏輯時(shí)鐘編號(hào)進(jìn)行執(zhí)行的,即各個(gè)節(jié)點(diǎn)先執(zhí)行C(event1)為1的event1,在執(zhí)行C(event2)為2的event2……進(jìn)程pi只有執(zhí)行完一條指令,才能提出下一條指令的時(shí)鐘申請(qǐng)。
所述時(shí)鐘系統(tǒng)包括多個(gè)授時(shí)中心;但是多個(gè)授時(shí)中心的時(shí)鐘又是難以保證時(shí)時(shí)刻刻一致只能在一定的精度范圍內(nèi)的保持一致。故為了完成在多節(jié)點(diǎn)的情況下能授給任何節(jié)點(diǎn)相同的時(shí)鐘,可以在這些分布式授時(shí)中心上運(yùn)行一致性算法paxos來為事件系統(tǒng)的執(zhí)行提供時(shí)鐘協(xié)作信號(hào)。從而使得事務(wù)系統(tǒng)中發(fā)生在各個(gè)節(jié)點(diǎn)中進(jìn)程的事件都可以被注冊(cè)唯一的編號(hào),只要其是經(jīng)過我們的時(shí)鐘系統(tǒng)提出了申請(qǐng)。
所述時(shí)鐘系統(tǒng)授時(shí)過程如下:
(a)如果事件a代表了進(jìn)程Pi發(fā)送消息m的事件,那么消息m包含的時(shí)間戳Tm=Ci(a);
(b)在收到消息m后,時(shí)鐘系統(tǒng)會(huì)設(shè)置Cj的值使得它大于等于它的當(dāng)前值并大于Tm。
時(shí)鐘系統(tǒng)還設(shè)置有自主學(xué)習(xí)單元,自主學(xué)習(xí)單元會(huì)使得編號(hào)單調(diào)遞增。
本發(fā)明所舉實(shí)施方式或者實(shí)施例對(duì)本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所舉實(shí)施方式或者實(shí)施例僅為本發(fā)明的優(yōu)選實(shí)施方式而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)對(duì)本發(fā)明所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。