專利名稱:分布式環(huán)境下服務協(xié)同節(jié)點組織結(jié)構(gòu)的維護方法
技術(shù)領(lǐng)域:
本發(fā)明涉及開放環(huán)境下Web服務動態(tài)協(xié)同技術(shù)領(lǐng)域,尤其涉及分布式環(huán)境下服務協(xié)同 節(jié)點組織結(jié)構(gòu)的維護方法。
技術(shù)背景計算機術(shù)語信息技術(shù)的發(fā)展經(jīng)歷了一個從集中到分布、從單一到多樣、從彼此獨立到 相互不斷融合的發(fā)展過程。然而,計算與信息孤島仍然存在。在目前這種開放、動態(tài)、復 雜的計算環(huán)境下,傳統(tǒng)的計算技術(shù)難以實現(xiàn)計算能力和信息資源的充分共享,面向服務計 算(SOC)和面向服務體系結(jié)構(gòu)(SOA)己被廣泛接受,成為構(gòu)造下一代分布式應用的計 算范型和體系結(jié)構(gòu)。SOA體現(xiàn)了分布式軟件系統(tǒng)的構(gòu)造和組成特點,刻畫服務提供者、服 務請求者和服務代理這三種角色以及它們之間的關(guān)系,通過發(fā)布、發(fā)現(xiàn)、綁定三種基本操作描述三者之間的基本交互。Web服務是面向服務體系結(jié)構(gòu)的一種具體化技術(shù),建立在一 系列的開發(fā)標準之上,包括XML、 SOAP、 WSDL以及UDDI等。面向SOA的分布式應用中,服務是基本構(gòu)造單元,面向服務的復雜應用是由服務之間 的交互協(xié)同來實現(xiàn)。由于Web服務與生俱來的分布式特征,為了協(xié)調(diào)分布式環(huán)境下的大量 服務節(jié)點進行協(xié)同工作,需要將協(xié)同節(jié)點按照其功能特征進行組織,在節(jié)點間建立關(guān)聯(lián)關(guān) 系,形成一定的拓撲結(jié)構(gòu)。在動態(tài)網(wǎng)絡環(huán)境下,協(xié)同節(jié)點的穩(wěn)定性和可靠性往往不可預知,節(jié)點可能隨時加入或 退出甚至失效。這樣會破壞節(jié)點間的關(guān)聯(lián)關(guān)系以及節(jié)點形成的拓撲結(jié)構(gòu)。常見的分布式結(jié) 構(gòu)維護方法有兩種。其一,分布式結(jié)構(gòu)中存在主控節(jié)點,負責維護全局拓撲結(jié)構(gòu)圖。當新節(jié)點欲加入結(jié)構(gòu) 時,將向其主控節(jié)點發(fā)送請求,主控節(jié)點接受請求后負責安置新節(jié)點,并更新全局拓撲結(jié) 構(gòu)圖;當節(jié)點欲退出結(jié)構(gòu)時,將發(fā)消息通知其主控節(jié)點,主控節(jié)點負責解除退出節(jié)點與其 鄰節(jié)點的關(guān)系,根據(jù)結(jié)構(gòu)特征在相關(guān)節(jié)點間建立新的連接關(guān)系,并更新全局拓撲結(jié)構(gòu)圖; 當節(jié)點發(fā)現(xiàn)失效節(jié)點時,將向其主控節(jié)點發(fā)送錯誤報告,主控節(jié)點直接移除失效節(jié)點或者 尋找合適節(jié)點替換失效節(jié)點,并更新全局拓撲結(jié)構(gòu)圖。該方法中,主控節(jié)點的失效將導致 整個分布式結(jié)構(gòu)無法維護,存在單點失效的缺點。其二,分布式結(jié)構(gòu)中不存在主控節(jié)點,每個節(jié)點平等地參與結(jié)構(gòu)的維護,并保存一個全局拓撲結(jié)構(gòu)圖的副本。當新節(jié)點欲加入結(jié)構(gòu)時,可以向任意節(jié)點發(fā)送請求,收到請求的 節(jié)點負責安置新節(jié)點,并向結(jié)構(gòu)中的所有節(jié)點廣播消息,更新各節(jié)點的全局拓撲結(jié)構(gòu)圖副 本;當節(jié)點欲退出結(jié)構(gòu)時,將發(fā)消息通知其鄰節(jié)點,解除與鄰節(jié)點的關(guān)系,根據(jù)結(jié)構(gòu)特征 可能需要在其鄰節(jié)點間建立新的連接關(guān)系,并向結(jié)構(gòu)中的所有節(jié)點廣播消息,更新各節(jié)點 的全局拓撲結(jié)構(gòu)圖副本;當節(jié)點發(fā)現(xiàn)失效節(jié)點時,錯誤發(fā)現(xiàn)節(jié)點負責修復結(jié)構(gòu),直接移除 失效節(jié)點或者尋找合適節(jié)點替換失效節(jié)點,并向結(jié)構(gòu)中的所有節(jié)點廣播消息,更新各節(jié)點 的全局拓撲結(jié)構(gòu)圖副本。該方法中,結(jié)構(gòu)的每次變化都需要通知所有節(jié)點更新其全局拓撲 結(jié)構(gòu)圖副本,這樣帶來大量的消息通信,增加網(wǎng)絡負載壓力,同時由于頻繁的消息通信可 能造成更多的消息丟失,從而導致各節(jié)點的全局拓撲結(jié)構(gòu)圖不一致等問題。 發(fā)明內(nèi)容本發(fā)明的技術(shù)解決問題克服現(xiàn)有技術(shù)的不足,提供一種分布式環(huán)境下服務協(xié)同節(jié)點 組織結(jié)構(gòu)的維護方法,該方法不存在單點失效問題,同時又不增加網(wǎng)絡負載壓力,不會使 通信量過大。本發(fā)明的技術(shù)解決方案分布式環(huán)境下服務協(xié)同節(jié)點組織結(jié)構(gòu)的維護方法,步驟如下(1) 初始化,根據(jù)可維護性概率的計算方法確定每個節(jié)點需要維護的鄰域范圍即已知 鄰域的半徑;如圖1所示。(2) 在所述的鄰域范圍內(nèi),對新節(jié)點加入、節(jié)點主動退出和節(jié)點失效進行維護。 所述步驟(1)中對于線形結(jié)構(gòu)可維護性概率的計算方法為-線形結(jié)構(gòu)可維護性概率<formula>formula see original document page 6</formula>/t為己知鄰域的半徑即巳知鄰域節(jié)點中與當前節(jié)點的最遠距離,《為單個節(jié)點失效的概 率,n為線形結(jié)構(gòu)節(jié)點總數(shù)。所述步驟(1)中對于環(huán)形結(jié)構(gòu)可維護性概率的計算方法為'1-《"當 0S "環(huán)形結(jié)構(gòu)可維護性概率<formula>formula see original document page 6</formula>t為巳知鄰域的半徑即已知鄰域節(jié)點中與當前節(jié)點的最遠距離,《為單個節(jié)點失效的概 為環(huán)形結(jié)構(gòu)節(jié)點總數(shù)。所述步驟(1)中對于樹形結(jié)構(gòu)可維護性概率的計算方法為-<formula>formula see original document page 7</formula>其中《(x, 為i丄"(z) |< d(^《w ,并且或者沒有子樹或者的所有子樹均是肛可維護的;丄"z)為節(jié)點x的失效鏈,是從x到節(jié)點z, zer(;o的路徑,記作x…z,并且滿足(1)路徑上的所有節(jié)點都失效;(2) Z是葉子節(jié)點或者Z的子節(jié)點為正常節(jié)點; 特殊地,當X為正常節(jié)點時,節(jié)點X僅有一條空失效鏈,記作0, 一般地,節(jié)點x通常有 一到多條失效鏈,記節(jié)點X的失效鏈集合為Sj(Z)二^f(義)li^(義)是節(jié)點的失效鏈L其中 記最長的失效鏈為i^"(j);《(Z)為節(jié)點X失效的概率;P(I)為節(jié)點X有效的概率,; (Z)-1-;M;(;n為樹7X;r)是yfc-可維護(可靠)的概率,樹r(義)是/t-可維護的是指從根節(jié)點x 到r(義)葉子節(jié)點的所有路徑上都不會出現(xiàn)^個或^個以上連續(xù)的失效節(jié)點; rpr)為以x為根節(jié)點的樹結(jié)構(gòu);C7n7&(義)為節(jié)點X所有子節(jié)點組成的集合;d是《(足^中的變量'事件《(I,")發(fā)生的條件之一是l丄r(I)l〈"W^W, Yr e c/z//&(jo , ;t為已知鄰域的半徑即己知鄰域節(jié)點中與當前節(jié)點的最遠距離,r為樹結(jié)構(gòu)的樹根節(jié)點。所述步驟(2)的新節(jié)點加入的維護方法如下第一步安置新節(jié)點,當某節(jié)點收到新節(jié)點的加入請求時,根據(jù)節(jié)點功能,為新節(jié)點 安排一個合適的位置;第二步初始化新節(jié)點結(jié)構(gòu)模型,獲得其相鄰節(jié)點的局部結(jié)構(gòu)模型,根據(jù)這些信息, 初始化自身的局部結(jié)構(gòu)模型;第三步結(jié)構(gòu)重構(gòu),新節(jié)點與插入位置周圍節(jié)點建立關(guān)聯(lián)關(guān)系,為保持結(jié)構(gòu)特征不變, 相應地解除原有的部分關(guān)聯(lián)關(guān)系;第四步更新受影響節(jié)點的局部結(jié)構(gòu)模型,新節(jié)點發(fā)出的加入通告,包含該節(jié)點局部 結(jié)構(gòu)模型信息,節(jié)點收到通告后,根據(jù)通告檢査自身局部結(jié)構(gòu)模型的一致性,如果不一致, 則更新模型且用自身的局部結(jié)構(gòu)模型更換通告內(nèi)容,并繼續(xù)轉(zhuǎn)發(fā)通告。所述步驟(2)的節(jié)點主動退出的維護方法如下第一步結(jié)構(gòu)重構(gòu),刪除欲離開的節(jié)點及其與鄰節(jié)點的關(guān)聯(lián)關(guān)系,為保持結(jié)構(gòu)特征不 變,需要相應地在離開節(jié)點的鄰節(jié)點中建立一些新的關(guān)聯(lián)關(guān)系;第二步更新受影響節(jié)點的局部結(jié)構(gòu)模型,離開節(jié)點發(fā)出離開通告,包含該節(jié)點局部 結(jié)構(gòu)模型信息,節(jié)點收到通告后,根據(jù)通告檢查自身局部結(jié)構(gòu)模型的一致性,如果不一致, 則更新模型且用自身的局部結(jié)構(gòu)模型更換通告內(nèi)容,并繼續(xù)轉(zhuǎn)發(fā)通告。所述步驟(2)的節(jié)點失效的維護方法如下-第一步節(jié)點狀態(tài)觀測,其中有兩種可選方式(1)采用Probe方式,每個節(jié)點周期 性向鄰節(jié)點發(fā)送問詢消息,并期待其鄰節(jié)點的應答消息,如果在超時時間內(nèi)未收到某節(jié)點 應答消息,則觀測到該鄰節(jié)點處于失效狀態(tài);否則,觀測到該鄰節(jié)點處于有效狀態(tài);(2) 采用Gossip方式,每個節(jié)點周期性的向鄰節(jié)點發(fā)送心跳消息,如果節(jié)點在一個周期時間內(nèi) 都未收到來自某鄰節(jié)點的心跳消息,則此節(jié)點觀測到該鄰節(jié)點處于失效狀態(tài);否則,則觀 測到該鄰節(jié)點處于有效狀態(tài);第二步失效節(jié)點判定,其中有兩類可選方法(l)獨立判定方法,即節(jié)點僅僅根據(jù) 自身對鄰節(jié)點狀態(tài)的觀測結(jié)果來判定節(jié)點是否失效;(2)合作判定方法,每個節(jié)點都對應 一個觀測群組,由其所有或部分鄰節(jié)點構(gòu)成,對該目標節(jié)點進行觀測且將觀測結(jié)果部分或 全部的在群組中共享,節(jié)點根據(jù)自身觀測結(jié)果和群組中其他節(jié)點共享的觀測結(jié)果,共同判 定目標節(jié)點是否失效。第三步結(jié)構(gòu)重構(gòu),當某節(jié)點判定其某鄰節(jié)點失效后,將根據(jù)已知的局部結(jié)構(gòu)模型, 依次距離最近優(yōu)先嘗試連接它己知鄰域范圍的其他節(jié)點,或者成功連接到一個有效節(jié)點, 則直接執(zhí)行第四步,或者所有能被嘗試連接的點都失效,則無法自維護,需要人工介入;第四步更新受影響節(jié)點的局部結(jié)構(gòu)模型,結(jié)構(gòu)重構(gòu)的發(fā)起節(jié)點也是失效節(jié)點的發(fā)現(xiàn) 者將發(fā)送重構(gòu)通告,包含該節(jié)點局部結(jié)構(gòu)模型信息,節(jié)點收到通告后,根據(jù)通告檢查自身 局部結(jié)構(gòu)模型的一致性,如果不一致,則更新模型且用自身的局部結(jié)構(gòu)模型更換通告內(nèi)容, 并繼續(xù)轉(zhuǎn)發(fā)通告。本發(fā)明的原理本發(fā)明提出了一種基于結(jié)構(gòu)的服務協(xié)同節(jié)點組織機制,并針對節(jié)點動 態(tài)性特征,給出了基于一定成功概率的分布式結(jié)構(gòu)維護方法。為了實現(xiàn)在分布式環(huán)境下協(xié) 調(diào)各服務節(jié)點協(xié)同工作,本發(fā)明將分散在Internet上的大量原本相互獨立的自治服務節(jié)點組 織起來,根據(jù)其功能特點在節(jié)點之間建立關(guān)聯(lián)關(guān)系(如將具有相似功能的服務節(jié)點組織起 來),形成一系列互連的具有一定結(jié)構(gòu)(包括線形、環(huán)形、樹形)的服務組織。由于節(jié)點 的動態(tài)性(加入或退出,尤其可能失效),服務節(jié)點的關(guān)聯(lián)關(guān)系會被破壞,于是服務組織的結(jié)構(gòu)需要被維護。由于服務組織中不存在主控節(jié)點,同時為了避免要求所有節(jié)點都維護 全局結(jié)構(gòu)模型,每個節(jié)點維護局部結(jié)構(gòu)視圖,即己知在其一定鄰域范圍內(nèi)的節(jié)點信息,這 些信息稱為局部結(jié)構(gòu)模型。當節(jié)點加入或主動退出時,只有鄰域內(nèi)節(jié)點會受到影響,需要 修改其局部結(jié)構(gòu)模型。當出現(xiàn)若干節(jié)點失效時,節(jié)點根據(jù)其掌握的局部結(jié)構(gòu)模型修復結(jié)構(gòu)。 由于節(jié)點只已知局部結(jié)構(gòu)模型,不是所有的失效情況都能夠被修復,例如當已知鄰域內(nèi)的 所有節(jié)點同時失效時,節(jié)點無法與服務組織中其他有效節(jié)點建立連接,此時結(jié)構(gòu)將無法被 維護。顯然,結(jié)構(gòu)的可維護概率取決于每個節(jié)點已知的局部結(jié)構(gòu)模型范圍的大小,即節(jié)點 已知的鄰域節(jié)點越多,可維護概率越大,但同時各節(jié)點結(jié)構(gòu)模型一致性維護的開銷也越大。 本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點在于(1) 本發(fā)明在實現(xiàn)結(jié)構(gòu)維護過程中,不需要主控節(jié)點,避免了單點失效、性能瓶頸等 集中控制模式中存在的問題。(2) 本發(fā)明采用維護局部結(jié)構(gòu)模型的方法,保證在一定概率下結(jié)構(gòu)的可維護性。與每 個節(jié)點均維護全局結(jié)構(gòu)模型的方法相比,犧牲了一些可維護概率,但大大降低了維護開銷。
圖1為本發(fā)明的實現(xiàn)流程圖; 圖2為本發(fā)明實施例1中樹形結(jié)構(gòu)服務組織; 圖3為本發(fā)明實施例中1新節(jié)點加入樹形結(jié)構(gòu)的過程; 圖4為本發(fā)明實施例中1采用父節(jié)點替代方式重構(gòu)后的樹形結(jié)構(gòu); 圖5為本發(fā)明實施例1中采用子節(jié)點替代方式重構(gòu)后的樹形結(jié)構(gòu); 圖6為本發(fā)明實施例1中節(jié)點失效情況下的樹形結(jié)構(gòu)重構(gòu)過程; 圖7為本發(fā)明實施例2中線形結(jié)構(gòu)服務組織; 圖8為本發(fā)明實施例2中新節(jié)點加入線形結(jié)構(gòu)的過程; 圖9為本發(fā)明實施例2中節(jié)點主動退出線形結(jié)構(gòu)的過程; 圖10為本發(fā)明實施例2中節(jié)點失效情況下的線形結(jié)構(gòu)重構(gòu)過程; 圖11為本發(fā)明實施例3中環(huán)形結(jié)構(gòu)服務組織; 圖12為本發(fā)明實施例3中新節(jié)點加入環(huán)形結(jié)構(gòu)的過程; 圖13為本發(fā)明實施例3中節(jié)點主動退出環(huán)形結(jié)構(gòu)的過程 圖14為本發(fā)明實施例3中節(jié)點失效情況下的環(huán)形結(jié)構(gòu)重構(gòu)過程。
具體實施方式
實施例1如圖2所示,下面以樹形結(jié)構(gòu)為例給出上述技術(shù)路線的具體實施方式
。協(xié)同節(jié)點形成如圖2所示的樹形結(jié)構(gòu),樹中每個節(jié)點完成向其上級節(jié)點(父節(jié)點)上報數(shù)據(jù)的功能,設任意節(jié)點X的級別為L(X),且有L(B)>L(N)> L(D)^L(C)。設單個節(jié)點失效的概率均為q=0.01,且要求整個結(jié)構(gòu)的可維護概率不小于0.99。計算圖2所示以A為根的樹結(jié)構(gòu)分別在k-l, 2,...時的可維護概率如下<formula>formula see original document page 10</formula>因為A4(^)〈0.99〈M;G4),因此k取2便滿足可維護概率不小于0.99。因此,在該例 的節(jié)點局部結(jié)構(gòu)模型中,除子節(jié)點、父節(jié)點之外還記錄其祖父節(jié)點(如果有的話)信息。 下面列舉三種情形分別描述該樹形結(jié)構(gòu)的維護過程。 (1)新節(jié)點N加入第一步節(jié)點B收到節(jié)點N的加入請求(包含節(jié)點N的地址、級別等信息)后,比較 其與N等級關(guān)系,由于L(N)〈L(B),節(jié)點B將N與其所有子節(jié)點進行比較,由于L(N)〉L(C) 且L(N)〉L(D),所以,將N安排在B節(jié)點之下,C、 D節(jié)點之上。第二步節(jié)點N從節(jié)點B獲得B的局部結(jié)構(gòu)模型,則N可以獲知其祖父節(jié)點A的.信 息。從而完成自身局部結(jié)構(gòu)模型的初始化,即N.grandparent=A,N.parent=B,N.childs={C,D}。第三步節(jié)點N作為子節(jié)點與B建立連接,作為父節(jié)點與C、 D建立連接,同時解除 B與C、 D間的父子關(guān)系,如圖3所示。同時修改B、 C、 D的局部結(jié)構(gòu)模型的部分信息 (B.childs={N}, C.parent=N, D.parent=N)。第四步節(jié)點N向B、 C、 D發(fā)送加入通告(包含N的局部結(jié)構(gòu)模型信息),根據(jù)通 告,B節(jié)點判斷其局部結(jié)構(gòu)模型無需更新,于是無需執(zhí)行任何操作;C節(jié)點檢査出其局部結(jié) 構(gòu)模型的不一致性,于是更新模型(C.grandparent=B),但由于C沒有子節(jié)點,它無需轉(zhuǎn)發(fā) 通告;D節(jié)點檢査出其局部結(jié)構(gòu)模型的不一致性,更新模型(D.grandparent=B),且轉(zhuǎn)發(fā) 通告(包含D的局部結(jié)構(gòu)模型)給E: E節(jié)點同樣檢查出其局部結(jié)構(gòu)模型的不一致性,更 新模型(E.grandparent-N),且不再轉(zhuǎn)發(fā)通告。(2) 節(jié)點B主動退出第一步如果L(D^L(C), B選擇父節(jié)點替代方式,C、 D節(jié)點連接到A節(jié)點之下,刪 除B與A、 C、 D間的關(guān)聯(lián)關(guān)系,同時修改A、 C、 D的局部結(jié)構(gòu)模型的部分信息 (A.childs={C,D,...}, C.parent=A, D.parent=A),如圖4所示;否則L(D)> L(C), B選擇子 節(jié)點替代方式,D節(jié)點連接到A節(jié)點之下,C節(jié)點連接到D節(jié)點之下,刪除B與A、 C、 D 間的關(guān)聯(lián)關(guān)系,同時修改B、C、D的局部結(jié)構(gòu)模型的部分信息(A.childs^D,…),C.parei^D,D. parent=A),如圖5所示。第二步節(jié)點B向A、 C、 D發(fā)送退出通告,當L(D)-L(C)時,根據(jù)通告,A節(jié)點判斷 其局部結(jié)構(gòu)模型無需更新,于是無需執(zhí)行任何操作;C節(jié)點檢查出其局部結(jié)構(gòu)模型的不一 致性,于是更新模型(C的祖父節(jié)點置為空即C.grandparent=NULL),但由于C沒有子節(jié)點, 它無需轉(zhuǎn)發(fā)通告;D節(jié)點檢査出其局部結(jié)構(gòu)模型的不一致性,更新模型(D的祖父節(jié)點置 為空即D.grandparent=NULL),且轉(zhuǎn)發(fā)通告(包含D的局部結(jié)構(gòu)模型)給E; E節(jié)點同樣 檢査出其局部結(jié)構(gòu)模型的不一致性,更新模型(E.gmndparent-A),且不再轉(zhuǎn)發(fā)通告。當L(D)> L(C)時,類似地更新受影響節(jié)點D、 E的局部結(jié)構(gòu)模型(D.grandparent-NULL ,E. grandparent-A)。(3) 節(jié)點B失效第一步節(jié)點狀態(tài)觀測。采用Probe方式,每個節(jié)點每隔Tperi。d時間向鄰節(jié)點發(fā)送問詢消息("Are you alive "),并期待其鄰節(jié)點的應答消息("Yes, I am"),如果在Ttime。ut 時間內(nèi)未收到某節(jié)點應答消息,則觀測到該鄰節(jié)點處于失效狀態(tài);否則,觀測到該鄰節(jié)點 處于有效狀態(tài)。第二步失效節(jié)點判定。采用合作判定方法,.每個節(jié)點為其每個鄰節(jié)點(下文稱為巨 標節(jié)點)設置一個計數(shù)器Cfail記錄目標節(jié)點被觀測處于失效狀態(tài)的次數(shù),初始值為0,當 Cfai產(chǎn)M時,則判定目標節(jié)點失效,取消對應計數(shù)器Cfai,,并執(zhí)行第三步。當觀測群組(例如,B的觀測群組可以由節(jié)點A、 C、 D組成)中某節(jié)點觀測到目標節(jié)點處于失效,它將通 告群組中的其他所有節(jié)點(這樣可以加速群組中其他節(jié)點對目標節(jié)點失效狀態(tài)的判定); 當觀測到目標節(jié)點處于有效狀態(tài),且CfaU不為O時,它將其觀測結(jié)果通告群組中的其他所 有節(jié)點(因為C加不為0說明群組中某些節(jié)點可能錯誤地觀測到目標節(jié)點失效,此時需要共享觀測到的目標節(jié)點有效的信息,避免錯誤判定)。節(jié)點根據(jù)自身觀測結(jié)果和群組中其 他節(jié)點共享的觀測結(jié)果,共同判定百標節(jié)點是否失效。當某節(jié)點觀測到目標節(jié)點處于失效狀態(tài)或者收到來自群組中其他節(jié)點的失效通知,則將C細加1;當觀測到目標節(jié)點處于失效狀態(tài)或收到自群組中其他節(jié)點的有效通知,則重置Cfei,為o。第三步結(jié)構(gòu)重構(gòu)。當節(jié)點D發(fā)現(xiàn)B失效后,D嘗試連接其祖父節(jié)點A,如果A有效, 則D申請作為子節(jié)點連接到A節(jié)點之下,修改A、 D局部結(jié)構(gòu)模型的部分信息 (A.childs={D,...},D.parent={A}, D.grandparent=A.parent=NULL),如圖6所示。第四步更新受影響節(jié)點的局部結(jié)構(gòu)模型。節(jié)點D發(fā)送重構(gòu)通告(包含該節(jié)點局部結(jié) 構(gòu)模型信息),節(jié)點E收到通告后,檢查到自身局部結(jié)構(gòu)模型的不一致性,更新模型 (E.grandparent=D)但無需繼續(xù)轉(zhuǎn)發(fā)通告。 實施例2下面以線形結(jié)構(gòu)為例給出上述技術(shù)路線的具體實施方式
。協(xié)同節(jié)點形成如圖7所示的線形結(jié)構(gòu),線上每個節(jié)點向其右鄰節(jié)點傳遞消息。設單個節(jié)點失效的概率均為q=0.01,且要求整個結(jié)構(gòu)的可維護概率不小于0.99。根據(jù)可維護性概率的計算方法確定每個節(jié)點需要維護的鄰域范圍k。計算圖7所示節(jié)點總數(shù)11=4的線結(jié)構(gòu)分別在1^1, 2,...時的可維護概率如下-Af(4,0.01) = 0.99. M) (3,0.01) =0.96059601M丄(1,0.01) = 0.99 M丄(0,0.01) = 0.99M丄(2,0.01) = 0.99 M丄(1,0.01) = 0.9801M(3,0.01) = 0.99. M丄(2,0.01) = 0.970299M(4,0.01) = 0.99 (M丄(3,0.0)+ 0.01 M丄(2,0.01)) =0.999702M〗(1,0.01) = 1M〗(2,0.01) = 0.99. (M丄2 (l,O.01) + 0.0 l-M丄(0,0.01)) = 0.9999 Mf (3,0.01) = 0.99 (M(2,0.01)十0.01. Mf(1,0.01)) = 0.999801因為Mi(4,0.01)< 0.99 <Mf (4,0.01),因此k取2便滿足可維護概率不小于0.99。因此,在該例的節(jié)點局部結(jié)構(gòu)模型中,除節(jié)點的直接相連節(jié)點之外,還記錄其右鄰節(jié)點的右鄰節(jié) 點(如果有的話)信息。下面列舉三種情形分別描述該線形結(jié)構(gòu)的維護過程。(1) 新節(jié)點N加入第一步節(jié)點B收到節(jié)點N的加入請求(包含節(jié)點N的地址)后,節(jié)點B將N作為 右鄰節(jié)點加入。第二步節(jié)點N從節(jié)點B獲得B的局部結(jié)構(gòu)模型,則N可以獲知B的原左、右鄰節(jié) 點的信息。從而完成自身局部結(jié)構(gòu)模型的初始化,艮卩N.left =B, N.right=B.right=C, N.right.right= B.right.right=D。第三步節(jié)點N與B和B的原右鄰節(jié)點C建立關(guān)聯(lián)關(guān)系,同時解除B、 C間的關(guān)聯(lián)關(guān) 系,如圖8所示。同時修改B、 C的局部結(jié)構(gòu)模型的部分信息(B.right=N,C.left=N)。第四步節(jié)點N向B、 C發(fā)送加入通告(包含N的局部結(jié)構(gòu)模型信息),根據(jù)通告, C節(jié)點判斷其局部結(jié)構(gòu)模型無需更新,于是無需執(zhí)行任何操作;B節(jié)點檢查出其局部結(jié)構(gòu)模 型的不一致性,于是更新模型(B.right.right=N.right=C),并將通告轉(zhuǎn)發(fā)給其左鄰節(jié)點A; A 節(jié)點檢査出其局部結(jié)構(gòu)模型的不一致性,更新模型(A.right.right=N),由于A無左鄰節(jié)點, 無需再轉(zhuǎn)發(fā)通告。(2) 節(jié)點B主動退出第一步解除B與A、 C間的關(guān)聯(lián)關(guān)系,同時修改A、 C的局部結(jié)構(gòu)模型的部分信息 (A.right=C, C.left-A),如圖9所示。第二步節(jié)點B向A、 C發(fā)送退出通告,根據(jù)通告,A節(jié)點檢查出其局部結(jié)構(gòu)模型的 不一致性,更新模型(A.right.right=B.right.right=D),由于A無左鄰節(jié)點,故無需再轉(zhuǎn)發(fā)通 告;C節(jié)點判斷其局部結(jié)構(gòu)模型無需更新,于是無需執(zhí)行任何操作。(3) 節(jié)點B失效第一步節(jié)點狀態(tài)觀測。采用Probe方式,每個節(jié)點每隔Tperi。d時間向鄰節(jié)點發(fā)送問詢 消息("Are you alive "),并期待其鄰節(jié)點的應答消息("Yes, I am"),如果在Ttimeout 時間內(nèi)未收到某節(jié)點應答消息,則觀測到該鄰節(jié)點處于失效狀態(tài);否則,觀測到該鄰節(jié)點 處于有效狀態(tài)。第二步失效節(jié)點判定。采用合作判定方法,每個節(jié)點為其每個鄰節(jié)點C下文稱為目 標節(jié)點)設置一個計數(shù)器Cfail記錄目標節(jié)點被觀測處于失效狀態(tài)的次數(shù),初始值為0,當 Cfai尸M時,則判定目標節(jié)點失效,取消對應計數(shù)器Cfai,,并執(zhí)行第三步。當觀測群組(例 如,B的觀測群組可以由節(jié)點A、 C組成)中某節(jié)點觀測到目標節(jié)點處于失效,它將通告群 組中的其他所有節(jié)點(這樣可以加速群組中其他節(jié)點對目標節(jié)點失效狀態(tài)的判定);當觀 測到目標節(jié)點處于有效狀態(tài),且Cfan不為O時,它將其觀測結(jié)果通告群組中的其他所有節(jié)點(因為Cfai!不為0說明群組中某些節(jié)點可能錯誤地觀測到目標節(jié)點失效,此時需要共享觀測到的目標節(jié)點有效的信息,避免錯誤判定)。節(jié)點根據(jù)自身觀測結(jié)果和群組中其他節(jié) 點共享的觀測結(jié)果,共同判定目標節(jié)點是否失效。當某節(jié)點觀測到目標節(jié)點處于失效狀態(tài)或者收到來自群組中其他節(jié)點的失效通知,則將Cf^加l;當觀測到目標節(jié)點處于失效狀態(tài)或收到自群組中其他節(jié)點的有效通知,則重置c加為o。第三步結(jié)構(gòu)重構(gòu)。當節(jié)點A發(fā)現(xiàn)B失效后,A嘗試連接節(jié)點C (A.rightright=C), 如果C有效,則A申請作為左鄰節(jié)點連接到C節(jié)點地的左邊,修改A、 C局部結(jié)構(gòu)模型的 部分信息(A.right=C,A.right.right=D, C.left=A),如圖IO所示。第四步更新受影響節(jié)點的局部結(jié)構(gòu)模型。節(jié)點A發(fā)送重構(gòu)通告(包含該節(jié)點局部結(jié) 構(gòu)模型信息)。節(jié)點C判斷其局部結(jié)構(gòu)模型無需更新。實施例3下面以環(huán)形結(jié)構(gòu)為例給出上述技術(shù)路線的具體實施方式
。協(xié)同節(jié)點形成如圖11所示的 環(huán)形結(jié)構(gòu),環(huán)上每個節(jié)點向其順時針方向鄰節(jié)點傳遞消息。設單個節(jié)點失效的概率均為 q=0.01,且要求整個結(jié)構(gòu)的可維護概率不小于0.99。根據(jù)可維護性概率的計算方法確定每個節(jié)點需要維護的鄰域范圍k。計算圖11所示節(jié)點總數(shù)n-4的環(huán)結(jié)構(gòu)分別在k-l, 2,...時的可維護概率如下-l-《"當 OS"""1(1-《).2>'.M》—-1,《)當^A: + 1(4,0.01) = 0.99. M(3,0.01) =0.96059601M侖(l,O.Ol) = 0.99. M侖(0,0.01) = 0.99(2,0.01) = 0.99 - M丄(I,O.01) = 0.9801(3,0.01) = 0.99' (2,0.01) = 0.970299A/g (4,0.01) = 0.99 04 (3,0.01) + 0.01 il^ (2,0.01)) =0.99960399A^(l,0.01) = 1-0.01 = 0.99尨^(2》.01) = 1-0.012 =0.9999(3,0.01) = 0.99 (M, (2,0.01) + 0.01. Mg(1,0.01)) = 0,999702因為Jl4(4,0.01) < 0.99 <A^(4,0.01),因此k取2便滿足可維護概率不小于0.99。因此,在該例的節(jié)點局部結(jié)構(gòu)模型中,除節(jié)點的直接相連節(jié)點之外,還記錄其順時針鄰節(jié)點的順 時針鄰節(jié)點。下面列舉三種情形分別描述該環(huán)形結(jié)構(gòu)的維護過程。(1) 新節(jié)點N加入第一步節(jié)點B收到節(jié)點N的加入請求(包含節(jié)點N的地址)后,節(jié)點B將N作為 順時針鄰節(jié)點加入。第二步節(jié)點N從節(jié)點B獲得B的局部結(jié)構(gòu)模型,完成自身局部結(jié)構(gòu)模型的初始化, 艮卩N.untiClockwise=B,N.clockwise=B.clockwise=C,N.clockwise.clockwise =B. clockwise.clockwise=D 。第三步節(jié)點N與B和B的原順時針鄰節(jié)點C建立關(guān)聯(lián)關(guān)系,同時解除B、 C間的關(guān) 聯(lián)關(guān)系,如圖12所示。同時修改B、 C的局部結(jié)構(gòu)模型的部分信息(B. cl0CkwiSe=N ,C. untiClockwise=N) ?!觥龅谒牟焦?jié)點N向B、 C發(fā)送加入通告(包含N的局部結(jié)構(gòu)模型信息),C節(jié)點判斷 其局部結(jié)構(gòu)模型無需更新,于是無需執(zhí)行任何操作;B節(jié)點檢查出其局部結(jié)構(gòu)模型的不一 致性,于是更新模型(B. clockwise.clockwise=N.clockwise=C),并將通告轉(zhuǎn)發(fā)給其逆時針鄰 節(jié)點A; A節(jié)點檢査出其局部結(jié)構(gòu)模型的不一致性,更新模型(A. clockwise.clockWise=N), 且A將通告轉(zhuǎn)發(fā)給D, D節(jié)點判斷其局部結(jié)構(gòu)模型無需更新,不執(zhí)行任何操作。(2) 節(jié)點B主動退出第一步解除B與A、 C間的關(guān)聯(lián)關(guān)系,同時修改A、 C的局部結(jié)構(gòu)模型的部分信息 (A.clockwise=C, C.untiClockwise=A),如圖I3所示。第二步節(jié)點B向A、 C發(fā)送退出通告,根據(jù)通告,C節(jié)點判斷其局部結(jié)構(gòu)模型無需 更新,于是無需執(zhí)行任何操作;A節(jié)點檢查出其局部結(jié)構(gòu)模型的不一致性,更新模型 (A.clockwise.clockwise =B.cIockwise.clockwise=D),且A將通告轉(zhuǎn)發(fā)給節(jié)點D,節(jié)點D更 新局部模型(D.clockwise.cIockwise=C);(3) 節(jié)點B失效第一步節(jié)點狀態(tài)觀測。采用Probe方式,每個節(jié)點每隔T^i。d時間向鄰節(jié)點發(fā)送問詢 消息("Are you alive "),并期待其鄰節(jié)點的應答消息("Yes, I am"),如果在Ttime。ut 時間內(nèi)未收到某節(jié)點應答消息,則觀測到該鄰節(jié)點處于失效狀態(tài);否則,觀測到該鄰節(jié)點 處于有效狀態(tài)。第二步失效節(jié)點判定。采用合作判定方法,每個節(jié)點為其每個鄰節(jié)點(下文稱為目標節(jié)點)設置一個計數(shù)器C加記錄目標節(jié)點被觀測處于失效狀態(tài)的次數(shù),初始值為0,當Cfai尸M時,則判定目標節(jié)點失效,取消對應計數(shù)器C加,并執(zhí)行第三步。當觀測群組(例如,B的觀測群組可以由節(jié)點A、 C組成)中某節(jié)點觀測到目標節(jié)點處于失效,它將通告群 組中的其他所有節(jié)點(這樣可以加速群組中其他節(jié)點對目標節(jié)點失效狀態(tài)的判定);當觀 測到目標節(jié)點處于有效狀態(tài),且Cfai,不為O時,它將其觀測結(jié)果通告群組中的其他所有節(jié) 點(因為CM不為O說明群組中某些節(jié)點可能錯誤地觀測到目標節(jié)點失效,此時需要共享 觀測到的目標節(jié)點有效的信息,避免錯誤判定)。節(jié)點根據(jù)自身觀測結(jié)果和群組中其他節(jié) 點共享的觀測結(jié)果,共同判定目標節(jié)點是否失效。當某節(jié)點觀測到目標節(jié)點處于失效狀態(tài) 或者收到來自群組中其他節(jié)點的失效通知,則將C加加h當觀測到目標節(jié)點處于失效狀態(tài)或收到自群組中其他節(jié)點的有效通知,則重置c加為o。第三步結(jié)構(gòu)重構(gòu)。當節(jié)點A發(fā)現(xiàn)B失效后,A嘗試連接節(jié)點C (A.clockwise.clockwise=C),如果C有效,則A申請作為逆時針鄰節(jié)點連接C節(jié)點,修改 A、 C局部結(jié)構(gòu)模型的部分信息 (A.clockwise=C, A.clockwise.clockwise=D, C.untiClockwise=A),如圖14所示。第四步更新受影響節(jié)點的局部結(jié)構(gòu)模型。節(jié)點A發(fā)送重構(gòu)通告(包含該節(jié)點局部結(jié) 構(gòu)模型信息)。節(jié)點C判斷其局部結(jié)構(gòu)模型無需更新;節(jié)點D檢查出其局部結(jié)構(gòu)模型的不 一致性,更新模型(D.clockwise.clockwise=C),且轉(zhuǎn)發(fā)通告給C,由于C的局部結(jié)構(gòu)模型 無需更新,C收到通告后不執(zhí)行任何操作。
權(quán)利要求
1、分布式環(huán)境下服務協(xié)同節(jié)點組織結(jié)構(gòu)的維護方法,其特征在于步驟如下(1)初始化,根據(jù)可維護性概率的計算方法確定每個節(jié)點可維護的鄰域范圍;(2)在所述的鄰域范圍內(nèi),對新節(jié)點加入、節(jié)點主動退出和節(jié)點失效進行維護。
2、 根據(jù)權(quán)利要求l所述的分布式環(huán)境下服務協(xié)同節(jié)點組織結(jié)構(gòu)的維護方法,其特征在 于所述步驟(1)中對于線形結(jié)構(gòu)可維護性概率的計算方法為線形結(jié)構(gòu)可維護性概率^^<formula>formula see original document page 2</formula>it為已知鄰域的半徑即己知鄰域節(jié)點中與當前節(jié)點的最遠距離,《為單個節(jié)點失效的概率,"為線形結(jié)構(gòu)節(jié)點總數(shù),n為線形結(jié)構(gòu)節(jié)點總數(shù)。
3、根據(jù)權(quán)利要求l所述的分布式環(huán)境下服務協(xié)同節(jié)點組織結(jié)構(gòu)的維護方法,其特征在于所述步驟(1)中對于環(huán)形結(jié)構(gòu)可維護性概率的計算方法為<formula>formula see original document page 2</formula>環(huán)形結(jié)構(gòu)可維護性概率<formula>formula see original document page 2</formula>t為已知鄰域的半徑即己知鄰域節(jié)點中與當前節(jié)點的最遠距離,《為單個節(jié)點失效的概 率,n為環(huán)形結(jié)構(gòu)節(jié)點總數(shù)。
4、根據(jù)權(quán)利要求1所述的分布式環(huán)境下服務協(xié)同節(jié)點組織結(jié)構(gòu)的維護方法,其特征在 于所述步驟(1)中對于樹形結(jié)構(gòu)可維護性概率的計算方法為<formula>formula see original document page 2</formula>其中^(x,勻為一個事件,事件發(fā)生的條件是i丄r(x)h:"w"),并且或者r(x)沒 有子樹或者r(;r)的所有子樹均是^可維護的;丄jz)為節(jié)點x的失效鏈,是從x到節(jié)點z,Ze7XiT)的路徑,記作義…Z,并且滿足(1)路徑上的所有節(jié)點都失效;(2) Z是葉子節(jié) 點或者Z的子節(jié)點為正常節(jié)點;特殊地,當X為正常節(jié)點時,節(jié)點X僅有一條空失效鏈, 記作-, 一般地,節(jié)點X通常有一到多條失效鏈,記節(jié)點X的失效鏈集合為^(z)-[^(;ni^(z)是節(jié)點的失效鏈L其中記最長的失效鏈為i^(義);.^X)為節(jié)點X失效的概率;p(;n為節(jié)點x有效的概率,/ (%) = 1-M"z)為樹r(;n是fc-可維護(可靠)的概率,樹r(義)是A-可維護的是指從根節(jié)點x到r(;n葉子節(jié)點的所有路徑上都不會出現(xiàn)A個或A個以上連續(xù)的失效節(jié)點; r(z)為以x為根節(jié)點的樹結(jié)構(gòu);CMA(X)為節(jié)點x所有子節(jié)點組成的集合;d是五5(X,c )中的變量,事件《(U)發(fā)生的條件之一是l丄,(Z)KrfO^A:), Y y e Cfe7A(幻,A為已知鄰域的半徑即已知鄰域節(jié)點中與當前節(jié)點的最遠距離,R為樹結(jié)構(gòu)的樹根節(jié)點。
5、 根據(jù)權(quán)利要求l所述的分布式環(huán)境下服務協(xié)同節(jié)點組織結(jié)構(gòu)的維護方法,其特征在 于所述步驟(2)的新節(jié)點加入的維護方法如下第一步安置新節(jié)點,當某節(jié)點收到新節(jié)點的加入請求時,根據(jù)節(jié)點功能,為新節(jié)點 安排一個合適的位置;第二步初始化新節(jié)點結(jié)構(gòu)模型,獲得其相鄰節(jié)點的局部結(jié)構(gòu)模型,根據(jù)這些信息, 初始化自身的局部結(jié)構(gòu)模型;第三步結(jié)構(gòu)重構(gòu),新節(jié)點與插入位置周圍節(jié)點建立關(guān)聯(lián)關(guān)系,為保持結(jié)構(gòu)特征不變, 相應地解除原有的部分關(guān)聯(lián)關(guān)系;第四步更新受影響節(jié)點的局部結(jié)構(gòu)模型,新節(jié)點發(fā)出的加入通告,包含該節(jié)點局部 結(jié)構(gòu)模型信息,節(jié)點收到通告后,根據(jù)通告檢査自身局部結(jié)構(gòu)模型的一致性,如果不一致, 則更新模型且用自身的局部結(jié)構(gòu)模型更換通告內(nèi)容,并繼續(xù)轉(zhuǎn)發(fā)通告。
6、 根據(jù)權(quán)利要求1所述的分布式環(huán)境下服務協(xié)同節(jié)點組織結(jié)構(gòu)的維護方法,其特征在 于所述步驟(2)的節(jié)點主動退出的維護方法如下第一步結(jié)構(gòu)重構(gòu),刪除欲離開的節(jié)點及其與鄰節(jié)點的關(guān)聯(lián)關(guān)系,為保持結(jié)構(gòu)特征不 變,需要相應地在離開節(jié)點的鄰節(jié)點中建立一些新的關(guān)聯(lián)關(guān)系;第二步更新受影響節(jié)點的局部結(jié)構(gòu)模型,離開節(jié)點發(fā)出離開通告,包含該節(jié)點局部 結(jié)構(gòu)模型信息,節(jié)點收到通告后,根據(jù)通告檢查自身局部結(jié)構(gòu)模型的一致性,如果不一致, 則更新模型且用自身的局部結(jié)構(gòu)模型更換通告內(nèi)容,并繼續(xù)轉(zhuǎn)發(fā)通告。
7、 根據(jù)權(quán)利要求1所述的分布式環(huán)境下服務協(xié)同節(jié)點組織結(jié)構(gòu)的維護方法,其特征在 于所述步驟(2)的節(jié)點失效的維護方法如下第一步節(jié)點狀態(tài)觀測,其中有兩種可選方式(1)采用Probe方式,每個節(jié)點周期 性向鄰節(jié)點發(fā)送問詢消息,并期待其鄰節(jié)點的應答消息,如果在超時時間內(nèi)未收到某節(jié)點 應答消息,則觀測到該鄰節(jié)點處于失效狀態(tài);否則,觀測到該鄰節(jié)點處于有效狀態(tài);(2) 采用Gossip方式,每個節(jié)點周期性的向鄰節(jié)點發(fā)送心跳消息,如果節(jié)點在一個周期時間內(nèi) 都未收到來自某鄰節(jié)點的心跳消息,則此節(jié)點觀測到該鄰節(jié)點處于失效狀態(tài);否則,則觀 測到該鄰節(jié)點處于有效狀態(tài);第二步失效節(jié)點判定,其中有兩類可選方法(1)獨立判定方法,即節(jié)點僅僅根據(jù) 自身對鄰節(jié)點狀態(tài)的觀測結(jié)果來判定節(jié)點是否失效;(2)合作判定方法,每個節(jié)點都對應 一個觀測群組,由其所有或部分鄰節(jié)點構(gòu)成,對該目標節(jié)點進行觀測且將觀測結(jié)果部分或 全部的在群組中共享,節(jié)點根據(jù)自身觀測結(jié)果和群組中其他節(jié)點共享的觀測結(jié)果,共同判 定目標節(jié)點是否失效。第三步結(jié)構(gòu)重構(gòu),當某節(jié)點判定其某鄰節(jié)點失效后,將根據(jù)已知的局部結(jié)構(gòu)模型, 依次距離最近優(yōu)先嘗試連接它已知鄰域范圍的其他節(jié)點,或者成功連接到一個有效節(jié)點, 則直接執(zhí)行第四步,或者所有能被嘗試連接的點都失效,則無法自維護,需要人工介入;第四步更新受影響節(jié)點的局部結(jié)構(gòu)模型,結(jié)構(gòu)重構(gòu)的發(fā)起節(jié)點也是失效節(jié)點的發(fā)現(xiàn) 者將發(fā)送重構(gòu)通告,包含該節(jié)點局部結(jié)構(gòu)模型信息,節(jié)點收到通告后,根據(jù)通告檢査自身 局部結(jié)構(gòu)模型的一致性,如果不一致,則更新模型且用自身的局部結(jié)構(gòu)模型更換通告內(nèi)容, 并繼續(xù)轉(zhuǎn)發(fā)通告。
全文摘要
分布式環(huán)境下服務協(xié)同節(jié)點組織結(jié)構(gòu)的維護方法,步驟如下(1)初始化,根據(jù)可維護性概率的計算方法確定每個節(jié)點可維護的鄰域范圍;(2)在所述的鄰域范圍內(nèi),對新節(jié)點加入、節(jié)點主動退出和節(jié)點失效進行維護;所述步驟(1)中有根據(jù)協(xié)同結(jié)構(gòu)可以有三種可維護性概率的計算方法,分別為線形、環(huán)形、樹形結(jié)構(gòu)。本發(fā)明不存在單點失效問題,同時又不增加網(wǎng)絡負載壓力,不會使通信量過大。
文檔編號H04L12/24GK101247273SQ20081010098
公開日2008年8月20日 申請日期2008年2月27日 優(yōu)先權(quán)日2008年2月27日
發(fā)明者敏 劉, 博 趙, 趙永望, 軍 韓, 馬殿富, 黃永剛 申請人:北京航空航天大學