專利名稱:多節(jié)點協(xié)調(diào)的時間一致性管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種分布式多節(jié)點的時間管理方法,屬于分布式系統(tǒng)與計算機網(wǎng)絡(luò)領(lǐng)域。
技術(shù)背景分布式系統(tǒng)是指通過網(wǎng)絡(luò)將地理上分散的節(jié)點加以連接,從而構(gòu)成的物理分布、邏輯一 致的計算機系統(tǒng)。它使置于其中的各個節(jié)點可以互相協(xié)調(diào)工作,共同完成一項任務(wù)。分布式 系統(tǒng)以其強大的計算能力和廣泛的應(yīng)用空間成為計算機學(xué)科的重要研究領(lǐng)域之一。但是,在 實際的系統(tǒng)運行過程中,有時會出現(xiàn)不一致、異常的現(xiàn)象,以分布式交互仿真中的一個現(xiàn)象 為例如圖1所示,坦克向目標(biāo)開火,隨后將此消息傳遞給其他成員,目標(biāo)收到后,觸發(fā)了爆 炸事件,又將這一消息傳遞給觀察者。在觀察者處,它卻先看到了目標(biāo)爆炸,然后看到了坦 克開火這樣的異常現(xiàn)象。這種不一致的現(xiàn)象是由分布式系統(tǒng)的特點造成的,隨著系統(tǒng)規(guī)模的增大,表現(xiàn)更為突出。 產(chǎn)生這種現(xiàn)象的原因主要有兩方面, 一方面是由于各個節(jié)點分布于不同的地理位置,沒有一 個統(tǒng)一、嚴(yán)格的物理時鐘對它們進(jìn)行同步;兩外一方面由于信息傳輸?shù)难舆t,使節(jié)點之間消 息的傳送產(chǎn)生了亂序。 一致性是分布式系統(tǒng)的基本要求,為了解決這個問題,我們需要"時 間管理"。時間管理,也可稱作"時間同步",它管理分布式系統(tǒng)中各類消息的發(fā)送和接收 并協(xié)調(diào)不同的時間推進(jìn)機制,從而保證分布式系統(tǒng)中各個節(jié)點邏輯的正確性。時間管理方法可以分為保守時間推進(jìn)方法和樂觀時間推進(jìn)方法兩大類。其中,保守時間 推進(jìn)方法的主要思想是在分布式系統(tǒng)運行過程中,各個分布的節(jié)點通過相互發(fā)送消息進(jìn)行 協(xié)調(diào),從而保證本地的因果關(guān)系不會被破壞。保守時間推進(jìn)方法是對分布式系統(tǒng)節(jié)點間進(jìn)行 同步的行之有效的方法,國內(nèi)對此進(jìn)行了大量的研究。目前廣泛采用的保守時間管理方法主 要有兩種, 一種是基于時間推進(jìn)上限及安全事件集的方法; 一種是基于因果關(guān)系序的時間管理方法。其中,第一種方法是在每個分布式節(jié)點處維護(hù)一個虛擬邏輯時間,通過搜集各個節(jié) 點的時間信息,計算出該節(jié)點的時間推進(jìn)上限以及可以安全處理的標(biāo)有時間值的事件集合, 節(jié)點可以安全推進(jìn)到時間上限范圍內(nèi)的任一邏輯時間值,并可以處理安全事件集合中的任何 事件,確保節(jié)點以時間遞增的順序協(xié)調(diào)推進(jìn),從而消除了異常與不一致的現(xiàn)象。該類方法應(yīng) 用較為廣泛,具體又可以分為多種不同的方法,主要體現(xiàn)在時間信息的搜集方法以及時間推 進(jìn)上限的計算方法的不同上。該類方法目前存在的問題是,各節(jié)點進(jìn)行全局時間信息的搜集 和全局計算效率較低并且占用了大量的網(wǎng)絡(luò)帶寬,隨著分布式系統(tǒng)規(guī)模的擴大、節(jié)點數(shù)量的 增多,嚴(yán)重影響了系統(tǒng)的效率,并且如果計算的方法不當(dāng)又沒有采取有效的死鎖避免和檢測 措施還會造成系統(tǒng)運行過程無法進(jìn)行。第二種方法是通過捕獲各個分布式節(jié)點產(chǎn)生的事件之 間的因果關(guān)系,確保消息按照因果關(guān)系提交給其他的節(jié)點。該方法同方法一相比,其對分布 節(jié)點的消息處理約束要更寬松些,它不必為各個節(jié)點維護(hù)邏輯時間,消息的提交也不需要按
照嚴(yán)格的時間遞增的順序,它只需要確定好提交給同一個節(jié)點的消息之間的因果關(guān)系,保證 這種因果關(guān)系不被破壞即可。該方法可以在一定程度上克服方法一中執(zhí)行效率低的缺點,但 是對于同一段時間內(nèi)發(fā)生的,之間沒有因果關(guān)系的事件,它們的提交順序不能保證一致。因 此該方法不適用于對消息處理順序要求嚴(yán)格的應(yīng)用,比如分析性仿真領(lǐng)域。總的來說,在分布式系統(tǒng)中,如何設(shè)計行之有效的時間管理方法,既可以使系統(tǒng)高效運 行,又可以占用少量的網(wǎng)絡(luò)帶寬,還可以在最大程度上保證時間的一致性,從而直接影響了 整個分布式系統(tǒng)的正確性和規(guī)模性,是計算機分布式系統(tǒng)領(lǐng)域所面臨的重點、難點問題之一。 發(fā)明內(nèi)容本發(fā)明的目的是提供一種分布式系統(tǒng)以及計算機網(wǎng)絡(luò)領(lǐng)域中的保守時間管理方法,以便 在分布式系統(tǒng)中可以有效、快速地進(jìn)行時間同步,并且在同步的過程中降低了對網(wǎng)絡(luò)帶寬的 消耗,從而提高了系統(tǒng)的運行效率及系統(tǒng)規(guī)模。為完成本發(fā)明的目的,本發(fā)明采用的技術(shù)方案為將分布式系統(tǒng)中的各個分布式節(jié)點根 據(jù)職能的不同分成三種角色成員節(jié)點、局部時間協(xié)調(diào)者、全局時間協(xié)調(diào)者。成員節(jié)點完成 具體的系統(tǒng)運行邏輯,局部時間協(xié)調(diào)者對其管理范圍內(nèi)的成員節(jié)點進(jìn)行時間信息維護(hù)并對它 們的時間同步進(jìn)行協(xié)調(diào),而全局時間協(xié)調(diào)者的任務(wù)是對整個分布式系統(tǒng)中的局部時間協(xié)調(diào)者 的時間信息進(jìn)行維護(hù)并對它們的時間同步進(jìn)行協(xié)調(diào)。與現(xiàn)有的技術(shù)方法相比,本發(fā)明基于分層協(xié)調(diào)的時間管理方法的有益效果是1、 該方法重點考慮了分布式系統(tǒng)規(guī)模擴展性,采用這種分層管理、分層協(xié)調(diào)的方法,同 其他的時間管理方法比可以減少系統(tǒng)全局計算的次數(shù)以及復(fù)雜度,同時可以有效降低網(wǎng)絡(luò)報 文輸出數(shù)量,有利于系統(tǒng)規(guī)模的擴展性。2、 通過多節(jié)點分層協(xié)調(diào)的方法,將數(shù)據(jù)的計算、維護(hù)分布在多個節(jié)點上,有效地提高系 統(tǒng)運行時的時間推進(jìn)速度和運行效率。通過對分布式節(jié)點的角色及層次的劃分,局部時間協(xié) 調(diào)者只需要維護(hù)、計算其范圍內(nèi)的各個成員節(jié)點的數(shù)據(jù),同理全局時間協(xié)調(diào)者只需要維護(hù)、 計算各個局部時間協(xié)調(diào)者的數(shù)據(jù),這樣系統(tǒng)中就避免了某個節(jié)點數(shù)據(jù)量及計算量過大成為系 統(tǒng)瓶頸的問題。3、 通過多節(jié)點分層次的進(jìn)行數(shù)據(jù)的維護(hù)和時間同步的協(xié)調(diào),有效地實現(xiàn)數(shù)據(jù)過濾,降低 了網(wǎng)絡(luò)帶寬資源的消耗。由于系統(tǒng)中進(jìn)行了角色以及層次的劃分,每層的節(jié)點只對其自身和 相鄰層次的數(shù)據(jù)信息感興趣,例如全局協(xié)調(diào)者就不需要關(guān)心成員節(jié)點的信息,反之亦然,這 樣,不僅數(shù)據(jù)的一致性比較容易維護(hù),同時也減少了為了維護(hù)一致性所發(fā)送的大量的信息報 文。同時,基于分層協(xié)調(diào)的方法還可以有效的進(jìn)行數(shù)據(jù)信息的過濾,降低網(wǎng)絡(luò)負(fù)載。
圖l為分布式系統(tǒng)中因果異常現(xiàn)象示意圖; 圖2為本發(fā)明流程圖; 圖3為角色內(nèi)部結(jié)構(gòu)示意圖; 圖4為層次結(jié)構(gòu)示意圖; 圖5為本發(fā)明第二部分的處理流程圖; 圖6為成員節(jié)點處理流程圖; 圖7為局部時間協(xié)調(diào)者處理流程圖; 圖8為全局時間協(xié)調(diào)者處理流程圖。
具體實施方式
下面結(jié)合附圖和實施例對本發(fā)明作進(jìn)一步詳細(xì)的描述。本發(fā)明屬于分布式系統(tǒng)及計算機網(wǎng)絡(luò)時間管理領(lǐng)域中的保守時間管理技術(shù),具體地 說是一種基于安全推進(jìn)時間上限以及安全事件集的保守時間管理方法。通過多節(jié)點分層 次協(xié)調(diào)、管理的方法達(dá)到了分布式節(jié)點時間同步效率高、占用網(wǎng)絡(luò)帶寬資源小的發(fā)明目 的,利于系統(tǒng)的維護(hù)和擴展,適用于大規(guī)模分布式系統(tǒng)。請參見圖2,本發(fā)明包括兩方面內(nèi)容第一部分是對系統(tǒng)中多個分布節(jié)點進(jìn)行角色 和層次的劃分。第二部分是分布成員節(jié)點時間同步的分層協(xié)調(diào)流程,其各種成員節(jié)點之 間的同步過程主要分以下三個步驟-2.1) 成員節(jié)點發(fā)出時間推進(jìn)請求,處理內(nèi)部消息并進(jìn)行時間推進(jìn);2.2) 局部時間協(xié)調(diào)者對其協(xié)調(diào)范圍內(nèi)的成員節(jié)點進(jìn)行時間信息維護(hù)和時間同步;2.3) 全局時間協(xié)調(diào)者對所有的局部時間協(xié)調(diào)者進(jìn)行時間信息的維護(hù)和時間同步。其中成員節(jié)點完成具體的系統(tǒng)運行邏輯,局部時間協(xié)調(diào)者對其管理范圍內(nèi)的成員節(jié)點進(jìn)行時間信息維護(hù)并對它們的時間同步進(jìn)行協(xié)調(diào),而全局時間協(xié)調(diào)者的任務(wù)是對整 個分布式系統(tǒng)中的局部時間協(xié)調(diào)者的時間信息進(jìn)行維護(hù)并對它們的時間同步進(jìn)行協(xié)調(diào)。下面對本發(fā)明作詳細(xì)陳述。第一部分在本發(fā)明中,系統(tǒng)中有多個參與系統(tǒng)運行的分布式節(jié)點,按照這些節(jié)點所完成的功能不同,劃分為三種角色以及三個層次,如圖3所示。三種角色分別為成員節(jié)點、局部 時間協(xié)調(diào)者和全局時間協(xié)調(diào)者,分別詳細(xì)介紹如下成員節(jié)點(Member Node, MN):負(fù)責(zé)完成具體的系統(tǒng)運行邏輯,其結(jié)構(gòu)如圖3。對 于一個畫有四個時間特征值,分別為邏輯時間(Logical Time, LT):系統(tǒng)運行過程中,成員節(jié)點當(dāng)前推進(jìn)到的虛擬時 間值;前瞻值(Lookahead, L):成員節(jié)點對其發(fā)送信息時間間隔的預(yù)測,表明該節(jié)點 可以預(yù)測在系統(tǒng)運行過程中未來的"Lookahead"時間內(nèi)將不會進(jìn)行帶有時間的信息的 發(fā)送;承諾邏輯時間(Promise Logical Time, PLT):承諾時間是指成員節(jié)點能夠發(fā) 送的消息時戳的最大下界,它是對其他成員節(jié)點的承諾,即在PLT時間內(nèi),不會再發(fā)送 帶時戳的消息,其他節(jié)點可以安全處理這一邏輯時間內(nèi)的消息;安全時間推進(jìn)上限(Greatest Advanced Time Stamp, GATS):成員節(jié)點可以進(jìn)行
時間推進(jìn)的最大上限值,任何在該時間內(nèi)的推進(jìn)請求都被允許。 同時,成員節(jié)點還維護(hù)兩個消息隊列,分別為-接收序(Receive Order, R0)消息隊列按照節(jié)點接收的順序?qū)⑾⒎湃腙犃校?每進(jìn)行一次時間推進(jìn),就對隊列中的所有消息進(jìn)行處理。時間序(Time Sta即Order, TSO)消息隊列將節(jié)點接收到的消息按照其所帶的 時間戳由小到大的順序有序地插入到隊列中,節(jié)點時間推進(jìn)后,處理隊列中消息時間戳 小于其要推進(jìn)的時間值的消息。周部時間協(xié)調(diào)者(Local Time Coordinator, LTC):負(fù)責(zé)對其管理范圍內(nèi)的成員 節(jié)點進(jìn)行時間信息維護(hù)并對它們的時間同步進(jìn)行協(xié)調(diào),其結(jié)構(gòu)如圖3所示。每一個LTC 包含以下的時間信息局部最小時間值(Local Min Promise Logical Time, LMPLT),根據(jù)該LTC協(xié)調(diào) 范圍內(nèi)的隨的PLT計算出來的最小PLT;周部次小時間值(Local Second min Promise Logical Time, LSPLT),根據(jù)該LTC 協(xié)調(diào)范圍內(nèi)的各個MN的PLT計算出來的除了 LMPLT以外的最小PLT:MN信息集MNInfo,用于維護(hù)LTC協(xié)調(diào)范圍內(nèi)的各個MN的PLT值,用于局部時間信 息值的計算;最小時間畫節(jié)點集合MinMNSet,用于存放該LTC協(xié)調(diào)范圍內(nèi)的PLT值與LMPLT相 等的那些隨節(jié)點的標(biāo)識符;兩個全局時間特征值由GTC計算出來的GMPLT和GSPLT (在下面有詳細(xì)說明)。全局時間協(xié)調(diào)者(Global Time Coordinator, GTC):負(fù)責(zé)對整個系統(tǒng)中的局部時 間協(xié)調(diào)者的時間信息進(jìn)行維護(hù)并對它們的時間同步進(jìn)行協(xié)調(diào),其結(jié)構(gòu)如圖3所示。每一 個GTC包含以下的時間信息全局最小時間值(Global Min Promise Logical Time, GMPLT),根據(jù)系統(tǒng)中各個 LTC的LMPLT和LSPLT計算出來的最小PLT:全局次小時間值(Global Second min Promise Logical Time, GSPLT),根據(jù)系統(tǒng) 中各個LTC的LMPLT和LSPLT計算出來的除了 GMPLT以外的最小PLT;LTC信息集LTCInfo,用于維護(hù)需要其進(jìn)行協(xié)調(diào)同步的各個LTC的LMPLT和LSPLT 信息,用于全局時間的計算;最小時間LTC節(jié)點集合MinLTCSet,用于存放GTC協(xié)調(diào)范圍內(nèi)的所有LTC中時間值 最小的節(jié)點的標(biāo)識符。同三種角色節(jié)點相對應(yīng),本發(fā)明還定義了三個層次成員執(zhí)行層(Member Executive Layer)、局部協(xié)調(diào)層(Local Coordinator Layer)禾口全局協(xié)調(diào)層(Global Coordinator Layer),它們和角色的對應(yīng)關(guān)系如圖3所示。通過對節(jié)點角色以及層次的定義以后, 本發(fā)明的方法是建立在圖4所示的結(jié)構(gòu)基礎(chǔ)之上的。從圖中可以看出,成員節(jié)點與局部 時間協(xié)調(diào)者之間、局部時間協(xié)調(diào)者與全局時間協(xié)調(diào)者之間,是多對一的關(guān)系,LTC負(fù)責(zé)協(xié)調(diào)多個隨(MN!…MNn) , GTC負(fù)責(zé)協(xié)調(diào)多個LTC (LTd…LT")。 第二部分本發(fā)明通過分層的、多協(xié)調(diào)者的方法進(jìn)行整個系統(tǒng)運行過程中的時間同步管理,其 各種成員節(jié)點之間的同步過程如圖5所示,主要分以下三個步驟2.1) 成員節(jié)點發(fā)出時間推進(jìn)請求,處理內(nèi)部消息并進(jìn)行時間推進(jìn);2.2) 局部時間協(xié)調(diào)者對其協(xié)調(diào)范圍內(nèi)的成員節(jié)點進(jìn)行時間信息維護(hù)和時間同步;2.3) 全局時間協(xié)調(diào)者對所有的局部時間協(xié)調(diào)者進(jìn)行時間信息的維護(hù)和時間同步。 下面分別進(jìn)一步陳述-步驟2. 1 )成員節(jié)點MNi的時間推進(jìn)請求可以分作兩種 一種是步進(jìn)的時間推進(jìn)方式, 即每次都以一個同樣的時間推進(jìn)長度向前推進(jìn); 一種是下一事件推進(jìn)方式,即成員節(jié)點 的時間推進(jìn)到其TSO隊列中等待處理的第一個事件的時戳值。如圖6所示該步驟可以詳細(xì)分為以下幾步2. 1. 1)成員節(jié)點MNi請求推進(jìn)到邏輯時間TA;2.1.2) 處理RO隊列中的所有消息,完成具體執(zhí)行邏輯(如何處理消息不是本發(fā)明 的內(nèi)容,它和分布式系統(tǒng)具體的執(zhí)行邏輯有關(guān),可以是給其它節(jié)點發(fā)送消息,也可能是 節(jié)點內(nèi)部的操作);2.1.3) 判斷請求時間Ta是否被允許,如果TA 〈 GATSi,則推進(jìn)狀態(tài)為"允許", 繼續(xù)執(zhí)行步驟2. 1.4);否則推進(jìn)狀態(tài)為"掛起",執(zhí)行步驟2. 1.7):2.1.4) 判斷時間推進(jìn)類型,如果是步進(jìn)時間推進(jìn),則處理TS0隊列中時間戳小于 Ta的所有消息,MNi的LTi二T"如果是下一事件推進(jìn)方式,設(shè)TSO隊列中最小事件的時 戳為TE,那么當(dāng)TSO隊列不為空,并且L〉 Te時,處理隊列中的最小事件,LL = TE, 否則LTi = TA;2.1.5) 計算麗i的PLTi,如果是步進(jìn)時間推進(jìn),則PLT, = LL + Lookahead"如果 是下一事件時間推進(jìn),則PLTi =min{ TA ,TE}+ Lookaheadi。然后將PLL以可靠通訊方 式發(fā)送給其局部時間協(xié)調(diào)者LTCk;2.1.6) 判斷MNi節(jié)點是否請求退出,如果是,則結(jié)束,否則從步驟2. 1.1)開始重 復(fù)開始執(zhí)行;2. 1. 7)判斷時間推進(jìn)類型,計算MNi的PLT"如果是步進(jìn)時間推進(jìn),則PLTi = TA + Lookaheadi;否則,如果是下一事件時間推進(jìn),那么PLT! =min{ TA, Te} + Lookahead" 計算完成后,以可靠的通訊方式發(fā)送給其局部時間協(xié)調(diào)者LTCk;2.1.8)等待來自局部協(xié)調(diào)層的消息,如果有消息到來,則更新本地的最大時間推 進(jìn)上限值GATSi,繼續(xù)從步驟2. 1.3)開始執(zhí)行;否則重復(fù)執(zhí)行步驟2. 1.8)。步驟2.2)是局部時間協(xié)調(diào)者對其協(xié)調(diào)范圍內(nèi)的成員節(jié)點進(jìn)行時間信息維護(hù)和時間 同步,局部協(xié)調(diào)者位于成員節(jié)點和全局協(xié)調(diào)者的中間層,作為二者的一個橋梁,如圖7 所示,它的具體處理流程可以分為以下幾個步驟
2.2.1) 等待消息的到達(dá),判斷消息來自哪一層,如果消息來自成員執(zhí)行層,則從 步驟2.2.2)開始執(zhí)行,如果消息來自全局協(xié)調(diào)層,則從步驟2.2.5)開始執(zhí)行;2.2.2) LTU接收來自MNi的消息,更新隨Info中MN,對應(yīng)數(shù)據(jù)項的PLT值;2.2.3) 局部時間信息的更新與計算。首先判斷更新的PLTi是否對當(dāng)前的局部的時 間信息LMPLTk、 LSPLT,產(chǎn)生影響,如果沒有影響,再判斷是否影響了最小時間成員節(jié)點 的集合和數(shù)量,如果有影響,那么更新集合內(nèi)的節(jié)點以及節(jié)點的數(shù)量,然后轉(zhuǎn)到步驟 2.2.8),如果同樣還是沒有影響,則不進(jìn)行其他操作,直接轉(zhuǎn)到步驟2.2.8)。如果在 第一次的判斷中,發(fā)現(xiàn)新的消息使局部時間信息發(fā)生了改變,則進(jìn)行重新計算。其中LMPLTk=min{ PLT\ } (i = 1、 2......n); LSPLTk取值為除了 LMPLTk以外的所有PLT值的最小值。假設(shè)LMPLTk = PLTw,那么LSPLTk = min{ PLT\ } (i = 1、 2…i、 i+2...... n):2. 2. 4)判斷是否需要向全局時間協(xié)調(diào)者發(fā)送局部的時間信息。如果LMPL"L和LSPLTk 中任意一個值發(fā)生了改變,則向全局時間協(xié)調(diào)者以可靠通訊方式發(fā)送消息進(jìn)行通知,轉(zhuǎn) 步驟2.2. 8)。2.2.5) LTCk接收GTC發(fā)送的時間消息,更新本地維護(hù)的GMPLT和GSPLT;2. 2. 6) LTU計算其負(fù)責(zé)協(xié)調(diào)的各個麗的GATS值。首先對GTC發(fā)送來的時間信息進(jìn) 行判斷,如果LTCk是全局最小成員節(jié)點的局部協(xié)調(diào)者,并且LTCk負(fù)責(zé)協(xié)調(diào)的MN中只有 一個成員節(jié)點MNi的PLT和GMPLT相等,那么MNi的GATSi = GSPLT,其他MN的GATS = GMPLT; 其余情況下,所有的MN的PLT都設(shè)置為GMPLT,即PLT, = PLT2 =......= PLT = GMPLT;2.2.7) LTCk向MN發(fā)送GATS。 LTCk通過其維護(hù)的時間信息,判斷哪些麗的GATS發(fā) 生了變化,然后以可靠的通訊方式通知MN新的GATS值。轉(zhuǎn)步驟2.2.8);2.2.8) 判斷LTG是否請求退出,如果是,則結(jié)束運行,否則繼續(xù)從步驟2.2. 1)開 始重復(fù)執(zhí)行。步驟2.3)是全局時間協(xié)調(diào)者對來自LTC的消息的處理與時間同步的協(xié)調(diào)。如圖8 所示,該步驟可以具體可分為以下幾個步2.3.1) GTC等待來自LTC的消息;2.3.2) 如果有消息到來,則接收來自LTCk的消息,更新其維護(hù)的LTCInfo中LTCk 的LMPLTk、 LSPLTk,否則轉(zhuǎn)步驟2. 3. 5);2.3.3) 全局時間信息的更新和計算。首先要判斷更新的LMPLTk、 LMPLTk值對全局時 間及狀態(tài)信息是否有影響,全局時間及狀態(tài)信息包括GTC上面維護(hù)的全局最小時間 GMPLT、全局次小時間GSPLT以及時間值與GMPLT和GSPLT相等的那些局部協(xié)調(diào)者的標(biāo) 識號集合和集合元素數(shù)量。如果改變了 GMPLT和GSPLT值,則進(jìn)行重新計算,其中GMPLT-min仏MPLTk, LSPLTk} (k=l、 2......m) ; GSPLT = mi n { LMPLTk, LSPLTk}(k=l、 2......m且LMPLTk ^GMPLT, LSPLTk-GMPLT),然后更新標(biāo)識號集合和集合元素數(shù)量,繼續(xù)步驟 2.3.4);如果GMPLT和GSPLT的值沒有改變,而是標(biāo)識號集合發(fā)生了變化,那么則更 新標(biāo)識號集合,然后判斷集合元素數(shù)量是否發(fā)生變化,如果變化了,繼續(xù)執(zhí)行步驟2.3.4),否則執(zhí)行步驟2.3. 5);2.3.4) 向各個局部時間協(xié)調(diào)者通知全局時間信息。首先,判斷GMPLT和GSPLT中 是否有值發(fā)生了改變,如果GMPLT發(fā)生了改變,則向所有的LTC發(fā)送新的時間值,如果 只是GSPLT發(fā)生了改變,則向需要該值的LTC發(fā)送新的時間值。如果GMPLT和GSPLT都 沒有發(fā)生改變,而是擁有全局最小時間的LTC的數(shù)量發(fā)生了變化,那么向需要時間值的 LTC進(jìn)行通知即可。為了降低網(wǎng)絡(luò)帶寬資源的占用,當(dāng)GTC通知LTC新的時間值時,只 需要保證向那些對消息可靠性要求較高的,擁有最小時間值的LTC以可靠的通訊方式接 收到新的時間信息,其余的向普通LTC發(fā)送時間信息可以使用組播等非可靠的通訊方式。2.3.5) 判斷GTC是否請求退出,如果是,則結(jié)束運行,否則從步驟2.3. 1)開始重 復(fù)執(zhí)行。以上所述僅是基于分層協(xié)調(diào)的時間管理方法的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技 術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤 飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種多節(jié)點協(xié)調(diào)的時間一致性管理方法,主要應(yīng)用在分布式系統(tǒng)中,用于保證各個分布式節(jié)點之間的時間一致性,其特征在于包含以下步驟1)根據(jù)職能以及邏輯關(guān)系對分布式系統(tǒng)中的各個節(jié)點進(jìn)行角色及層次的劃分;2)對分布式節(jié)點進(jìn)行時間同步的分層協(xié)調(diào),分為以下步驟2.1)分布成員節(jié)點發(fā)出時間推進(jìn)請求,處理內(nèi)部消息并進(jìn)行時間推進(jìn);2.2)局部時間協(xié)調(diào)者對其協(xié)調(diào)范圍內(nèi)的成員節(jié)點進(jìn)行時間信息維護(hù)和時間同步;2.3)全局時間協(xié)調(diào)者對所有的局部時間協(xié)調(diào)者進(jìn)行時間信息的維護(hù)和時間同步。
2.1) 分布成員節(jié)點發(fā)出時間推進(jìn)請求,處理內(nèi)部消息并進(jìn)行時間推進(jìn);2.2) 局部時間協(xié)調(diào)者對其協(xié)調(diào)范圍內(nèi)的成員節(jié)點進(jìn)行時間信息維護(hù)和時間同步;2.3) 全局時間協(xié)調(diào)者對所有的局部時間協(xié)調(diào)者進(jìn)行時間信息的維護(hù)和時間同步。2. 根據(jù)權(quán)利要求1所述的多節(jié)點協(xié)調(diào)的時間一致性管理方法,其特征在于-在所述步驟1)中,將節(jié)點分作三種角色和三個層次,其中三種角色分別為成員節(jié)點、局部時間協(xié)調(diào)者和全局時間協(xié)調(diào)者,成員節(jié)點與局部時間協(xié)調(diào)者、局部時間協(xié)調(diào) 者與全局時間協(xié)調(diào)者均為多對一的關(guān)系,三種不同角色的節(jié)點分別位于三個層次,分別 為成員節(jié)點位于成員執(zhí)行層、局部時間協(xié)調(diào)者位于局部協(xié)調(diào)層、全局時間協(xié)調(diào)者位于 全局協(xié)調(diào)層。3. 根據(jù)權(quán)利要求l所述的多節(jié)點協(xié)調(diào)的時間一致性管理方法,其特征在于 所述步驟2. 1)分為以下子步驟2.1.1) 成員節(jié)點提出時間推進(jìn)請求,根據(jù)推進(jìn)條件判斷推進(jìn)狀態(tài);2.1.2) 根據(jù)成員節(jié)點的時間推進(jìn)狀態(tài)及當(dāng)前時間狀態(tài)確定安全處理事件集合,處 理節(jié)點內(nèi)部的消息事件;2.1.3) 根據(jù)節(jié)點時間推進(jìn)請求類型和推進(jìn)狀態(tài)計算并更新本地的時間信息,通知 給周部時間協(xié)調(diào)者。4. 根據(jù)權(quán)利要求l所述的多節(jié)點協(xié)調(diào)的時間一致性管理方法,其特征在于 所述步驟2.2)分為以下子步驟-2.2.1) 等待消息的到達(dá),判斷消息來自哪一層,如果來自成員執(zhí)行層,則從步驟 2.2.2)開始執(zhí)行,如果來自全局協(xié)調(diào)層,則跳轉(zhuǎn)至步驟2.2.4);2.2.2) 接收成員節(jié)點發(fā)送的信息,更新成員節(jié)點的時間信息,判斷新的時間信息 是否對本地的協(xié)調(diào)時間信息造成了影響,如果是,則計算本地的協(xié)調(diào)時間;2.2.3) 將得到的新的信息值以可靠的通訊方式通知給全局時間協(xié)調(diào)者,返回至步 驟2.2. 1);2.2.4) 接收全局協(xié)調(diào)層發(fā)送的時間信息,更新本地保存的全局協(xié)調(diào)信息,判斷其 協(xié)調(diào)范圍內(nèi)的各個節(jié)點的時間推進(jìn)上限值是否發(fā)生變化,如果變化了,則重新計算變化 了的節(jié)點的時間推進(jìn)上限值;2.2.5) 以可靠通訊方式通知成員節(jié)點新的時間推進(jìn)上限值,返回步驟2.2. 1)。5. 根據(jù)權(quán)利要求1所述的多節(jié)點協(xié)調(diào)的時間一致性管理方法,其特征在于步驟2.3)分為以下子步驟-2.3.1) 接收來自局部協(xié)調(diào)層的消息,更新本地維護(hù)的局部時間協(xié)調(diào)者的時間信息; 判斷新的信息是否影響了全局時間協(xié)調(diào)信息,如有影響,則繼續(xù)執(zhí)行以下步驟,否則重 復(fù)執(zhí)行步驟2.3. 1);2.3.2) 計算全局時間協(xié)調(diào)信息,判斷是否需要發(fā)送全局時間協(xié)調(diào)信息,如果需要 向所有的局部時間協(xié)調(diào)者發(fā)送,則執(zhí)行步驟2.3.3),如果只是向部分局部時間協(xié)調(diào)者 發(fā)送,則執(zhí)行步驟2.3.4);2.3.3) 向所有的局部時間協(xié)調(diào)者組播最新全局時間協(xié)調(diào)信息,向最小時間節(jié)點所 在的局部協(xié)調(diào)者以可靠單播方式發(fā)送同樣的信息,跳轉(zhuǎn)回步驟2.3. 1);2.3.4) 向需要獲得最新全局時間信息的局部時間協(xié)調(diào)者以可靠單播方式發(fā)送最新 的信息值,跳轉(zhuǎn)回步驟2.3. 1)。6. 根據(jù)權(quán)利要求1所述的多節(jié)點協(xié)調(diào)的時間一致性管理方法,其特征在于 所述步驟2. 1)進(jìn)一步分為以下子步驟2. 1. 1)成員節(jié)點MNi請求推進(jìn)到邏輯時間TA;2.1.2) 處理接收序隊列中的所有消息,完成具體執(zhí)行邏輯;2.1.3) 判斷請求時間Ta是否被允許,如果Ta <安全時間推進(jìn)上限GATS"則推進(jìn) 狀態(tài)為"允許",繼續(xù)執(zhí)行步驟2. 1. 4);否則推進(jìn)狀態(tài)為"掛起",執(zhí)行步驟2. 1. 7):2.1.4) 判斷時間推進(jìn)類型,如果是步進(jìn)時間推進(jìn),則處理時間序隊列中時戳小于 Ta的所有消息,成員節(jié)點MNi的邏輯時間LT^T,;如果是下一事件推進(jìn)方式,設(shè)時間序隊列中最小事件的時戳為TE,當(dāng)時間序隊列不為空并且TA〉Te時,處理隊列中的最小事件,使邏輯時間LL = TE,否則邏輯時間LL =2. 1.5)計算成員節(jié)點MNi的承諾邏輯時間PLTi,如果是步進(jìn)時間推進(jìn),則PLT一LTi + Lookaheadi;如果是下一事件時間推進(jìn),則PLL =min{ TA ,TE}+ Lookaheadi,然后將 PLTi以可靠通訊方式發(fā)送給其局部時間協(xié)調(diào)者LTCk,式中Lookaheadi為前瞻值,表示成員節(jié)點MNi對其發(fā)送信息時間間隔的預(yù)測;2.1.6) 判斷成員節(jié)點MNi是否請求退出,如果是,則結(jié)束,否則從步驟2. 1.1)開 始重復(fù)開始執(zhí)行;2.1.7) 判斷時間推進(jìn)類型,計算成員節(jié)點MNi的承諾邏輯時間PLTi,如果是步進(jìn)時 間推進(jìn),則PLTi = L + Lookaheadi;否則,如果是下一事件時間推進(jìn),那么PLL =min{ TA,TE}+ Lookaheadi,計算完成后,以可靠的通訊方式發(fā)送給其局部時間協(xié)調(diào)者 LTC"2.1.8) 等待來自局部協(xié)調(diào)層的消息,如果有消息到來,則更新本地的最大時間推 進(jìn)上限值GATSi,繼續(xù)從步驟2. 1.3)開始執(zhí)行;否則重復(fù)執(zhí)行步驟2. 1.8)。7. 根據(jù)權(quán)利要求1所述的多節(jié)點協(xié)調(diào)的時間一致性管理方法,其特征在于 所述步驟2.2)進(jìn)一步分為以下子步驟2.2.1) 等待消息的到達(dá),判斷消息來自哪一層,如果消息來自成員執(zhí)行層,則從 步驟2.2.2)開始執(zhí)行,如果消息來自全局協(xié)調(diào)層,則從步驟2.2.5)開始執(zhí)行;2.2.2) 局部時間協(xié)調(diào)者LTCk接收來自成員節(jié)點MNi的消息,更新成員節(jié)點信息集 MNInfo中成員節(jié)點MNi對應(yīng)數(shù)據(jù)項的承諾邏輯時間PLT值;2.2.3) 進(jìn)行局部時間信息的更新與計算,首先判斷更新的PLTi是否對當(dāng)前的局部 最小時間值LMPLTk、局部次小時間值LSPLTk產(chǎn)生影響,如果沒有影響,再判斷是否影響 了最小時間成員節(jié)點的集合和數(shù)量,如果有影響,那么更新集合內(nèi)的節(jié)點以及節(jié)點的數(shù) 量,然后轉(zhuǎn)到步驟2.2.8),如果同樣還是沒有影響,則不進(jìn)行其他操作,直接轉(zhuǎn)到步 驟2.2.8),如果在第一次的判斷中,發(fā)現(xiàn)新的消息使局部時間信息發(fā)生了改變,則進(jìn)行重新計算局部時間信息,其中LMPLTk=min{ PLTi } (i = 1、 2......n); LSPLTk取值為除了 LMPLTk以外的所有PLT值的最小值;2.2.4) 判斷是否需要向全局時間協(xié)調(diào)者發(fā)送局部的時間信息,如果LMPLTk和LSPLTk 中任意一個值發(fā)生了改變,則向全局時間協(xié)調(diào)者以可靠通訊方式發(fā)送消息進(jìn)行通知,轉(zhuǎn) 步驟2.2.8);2.2.5) 局部時間協(xié)調(diào)者LTCk接收全局時間協(xié)調(diào)者GTC發(fā)送的時間消息,更新本地 維護(hù)的全局最小時間值GMPLT和全局次小時間值GSPLT;2. 2. 6) LTCk計算其負(fù)責(zé)協(xié)調(diào)的各個MN的GATS值,首先對GTC發(fā)送來的時間信息進(jìn) 行判斷,如果LTCk是全局最小成員節(jié)點的局部協(xié)調(diào)者,并且LT"負(fù)責(zé)協(xié)調(diào)的成員節(jié)點 MN中只有一個成員節(jié)點MN'的承諾邏輯時間PLT和全局最小時間值GMPLT相等,那么MNi 的安全時間推進(jìn)上限GATSi = GSPLT,其他麗的GATS = GMPLT;其余情況下,所有的MN 的PLT都設(shè)置為GMPLT,即PLTt = PLT2 = ...... = PLTn = GMPLT;2.2. 7) LTCk向顧發(fā)送GATS, LTCk通過其維護(hù)的時間信息,判斷哪些麗的GATS發(fā) 生了變化,然后以可靠的通訊方式通知MN新的GATS值,轉(zhuǎn)步驟2.2.8);2.2.8)判斷LTCK是否請求退出,如果是,則結(jié)束運行,否則繼續(xù)從步驟2.2. 1)開 始重復(fù)執(zhí)行。8.根據(jù)權(quán)利要求1所述的多節(jié)點協(xié)調(diào)的時間一致性管理方法,其特征在于 步驟2.3)進(jìn)一步分為以下子步驟2. 3. 1)全局時間協(xié)調(diào)者GTC等待來自局部時間協(xié)調(diào)者LTC的消息;2.3.2) 如果有消息到來,則接收來自LTCk的消息,更新其維護(hù)的局部時間協(xié)調(diào)者 信息集LTCInfo中LTCk的局部最小時間值LMPLTk、局部次小時間值LSPLTk,否則轉(zhuǎn)步驟 2.3.5);2.3.3) 進(jìn)行全局時間信息的更新和計算,首先判斷更新的LMPLTk、 LMPLTk值對全局 時間及狀態(tài)信息是否有影響,全局時間及狀態(tài)信息包括GTC上面維護(hù)的全局最小時間 GMPLT、全局次小時間GSPLT以及時間值與GMPLT和GSPLT相等的那些局部協(xié)調(diào)者的標(biāo) 識號集合和集合元素數(shù)量,如果改變了 GMPLT和GSPLT值,則進(jìn)行重新計算,其中GMPLT=min{LMPLTk, LSPLTk} (k=l、 2......m) ; GSPLT = min{ LMPLTk, LSPLTk}(k=l、 2......m且LMPLTk ^GMPLT, LSPLTk ^GMPLT),然后更新標(biāo)識號集合和集合元素數(shù)量,繼續(xù)步驟 2.3.4);如果GMPLT和GSPLT的值沒有改變,而是標(biāo)識號集合發(fā)生了變化,那么則更 新標(biāo)識號集合,然后判斷集合元素數(shù)量是否發(fā)生變化,如果變化了,繼續(xù)執(zhí)行步驟 2.3.4),否則執(zhí)行步驟2. 3.5);2.3.4) 向各個局部時間協(xié)調(diào)者通知全局時間信息,判斷GMPLT和GSPLT中是否有 值發(fā)生了改變,如果GMPLT發(fā)生了改變,則向所有的LTC發(fā)送新的時間值,如果只是GSPLT 發(fā)生了改變,則向需要該值的LTC發(fā)送新的時間值,如果GMPLT和GSPLT都沒有發(fā)生改 變,而是擁有全局最小時間的LTC的數(shù)量發(fā)生了變化,那么向需要時間值的LTC進(jìn)行通 知;2.3.5) 判斷GTC是否請求退出,如果是,則結(jié)束運行,否則從步驟2.3.1)開始 重復(fù)執(zhí)行。
全文摘要
本發(fā)明涉及一種多節(jié)點協(xié)調(diào)的時間一致性管理方法,屬于分布式系統(tǒng)時間管理技術(shù)領(lǐng)域。本發(fā)明包含兩個方面1)根據(jù)職能和邏輯關(guān)系對分布式系統(tǒng)中的各個節(jié)點進(jìn)行角色及層次的劃分;2)分布式節(jié)點時間同步的分層協(xié)調(diào)流程,可以具體分為以下幾個步驟2.1)分布式成員節(jié)點發(fā)出時間推進(jìn)請求,處理內(nèi)部消息并進(jìn)行時間推進(jìn);2.2)局部時間協(xié)調(diào)者對其協(xié)調(diào)范圍內(nèi)的成員節(jié)點進(jìn)行信息維護(hù)和時間同步;2.3)全局時間協(xié)調(diào)者對所有的局部時間協(xié)調(diào)者進(jìn)行信息的維護(hù)和時間同步。本發(fā)明具有執(zhí)行效率高、網(wǎng)絡(luò)帶寬占用量少的優(yōu)點,在分布式系統(tǒng)運行過程中,能夠有效地保證分布式系統(tǒng)的時間一致性,協(xié)調(diào)分布式節(jié)點之間的時間推進(jìn)關(guān)系。
文檔編號H04L12/24GK101132270SQ20071011989
公開日2008年2月27日 申請日期2007年8月2日 優(yōu)先權(quán)日2007年8月2日
發(fā)明者芳 呂, 威 吳, 忠 周, 趙沁平, 晟 魏 申請人:北京航空航天大學(xué)