專利名稱:一種基于距離的狀態(tài)同步方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種分布式系統(tǒng),尤其涉及一種分布式系統(tǒng)中狀態(tài)同步消息的分發(fā)方法。
背景技術(shù):
在一類基于對(duì)等系統(tǒng)的0跳Uero Hop)分布式系統(tǒng)中,每個(gè)節(jié)點(diǎn)需要知道整個(gè)集 群中所有節(jié)點(diǎn)的狀態(tài),一般采用以下步驟1.當(dāng)一個(gè)節(jié)點(diǎn)加入集群時(shí),發(fā)送一個(gè)多播(multicast)或者廣播(broadcast)消息;2.集群中所有節(jié)點(diǎn)接受并更新自己的成員視圖;3.選擇一個(gè)種子節(jié)點(diǎn),并請(qǐng)求該種子節(jié)點(diǎn)將其成員視圖傳遞給新加入的節(jié)點(diǎn);4.每個(gè)節(jié)點(diǎn)對(duì)所有其他節(jié)點(diǎn)維持心跳(heartbeat),相互交換成員視圖,如果判斷某節(jié) 點(diǎn)死亡,則將其從成員視圖中刪除。
這種簡(jiǎn)單的做法可以實(shí)現(xiàn)少量節(jié)點(diǎn)間的狀態(tài)同步,但是當(dāng)集群中節(jié)點(diǎn)數(shù)目達(dá)到幾 百甚至更多,每個(gè)節(jié)點(diǎn)都需要維護(hù)大量的心跳(heartbeat)連接,定時(shí)發(fā)送大量的心跳消 息。整個(gè)集群中心跳消息數(shù)量在0(ιΓ2)級(jí)別,網(wǎng)絡(luò)開銷巨大,幾乎沒有可行性。如果節(jié)點(diǎn) 間采用Gossip協(xié)議進(jìn)行,定時(shí)隨機(jī)選擇若干節(jié)點(diǎn)進(jìn)行通信,發(fā)送心跳消息,交換并更新各 自維護(hù)的節(jié)點(diǎn)的狀態(tài)信息;經(jīng)過一定的時(shí)間后,最終集群中所有節(jié)點(diǎn)都有最新一致的節(jié)點(diǎn) 狀態(tài)信息。這種方法保證了各節(jié)點(diǎn)之間數(shù)據(jù)的最終一致性,而且占用很少的網(wǎng)絡(luò)帶寬。
Gossip是一種分布式協(xié)議,通過Gossip協(xié)議分發(fā)節(jié)點(diǎn)狀態(tài)消息來進(jìn)行分布式 系統(tǒng)中節(jié)點(diǎn)之間的狀態(tài)同步,是構(gòu)造對(duì)等系統(tǒng)或重疊網(wǎng)絡(luò)等拓?fù)湫问降姆植际较到y(tǒng)時(shí) 經(jīng)常采用的方法。Gossip協(xié)議在實(shí)踐中已被證明特別適合在節(jié)點(diǎn)規(guī)模較大的分布式系 統(tǒng)中使用,進(jìn)行消息分發(fā)及狀態(tài)交換,以達(dá)到節(jié)點(diǎn)狀態(tài)及數(shù)據(jù)的最終一致性(Eventual Consistency),從而達(dá)到系統(tǒng)節(jié)點(diǎn)間狀態(tài)同步的目的。
一般的Gossip協(xié)議實(shí)現(xiàn),一個(gè)節(jié)點(diǎn)在選取若干節(jié)點(diǎn)并向其發(fā)送同步消息時(shí),通常 是從其所維護(hù)的一個(gè)節(jié)點(diǎn)列表中隨機(jī)地選取一些節(jié)點(diǎn),發(fā)送狀態(tài)同步消息,進(jìn)行狀態(tài)同步。
但是這種Gossip協(xié)議實(shí)現(xiàn)隨機(jī)選擇節(jié)點(diǎn)通信的方法,并沒有考慮到集群的拓?fù)?結(jié)構(gòu),如同一機(jī)架和不同機(jī)架,同一數(shù)據(jù)中心和不同數(shù)據(jù)中心等。圖2為一種數(shù)據(jù)中心的拓 撲結(jié)構(gòu)示意圖,如圖2所示,每個(gè)數(shù)據(jù)中心包括若干個(gè)集群203,每個(gè)集群203包含若干個(gè) 服務(wù)器機(jī)架202,每個(gè)服務(wù)器機(jī)架202還包含若干個(gè)服務(wù)器節(jié)點(diǎn)201。在這種集群拓?fù)浣Y(jié)構(gòu) 中,一般采用交換機(jī)互聯(lián)構(gòu)建網(wǎng)絡(luò)結(jié)構(gòu)。不同服務(wù)器機(jī)架的兩個(gè)節(jié)點(diǎn)間的帶寬一般比同機(jī) 架內(nèi)的兩個(gè)節(jié)點(diǎn)的帶寬緊張,跨數(shù)據(jù)中心的兩個(gè)節(jié)點(diǎn)間的帶寬就更緊張了,而且隨著節(jié)點(diǎn) 間所跨交換機(jī)和邏輯距離越來越遠(yuǎn),消息傳遞需要的時(shí)間也可能越長(zhǎng),使得系統(tǒng)消息同步 收斂的速度很慢,效率較低。發(fā)明內(nèi)容
為了解決現(xiàn)有實(shí)現(xiàn)中存在的不足,本發(fā)明的目的在于提供一種基于距離的狀態(tài)同步消息分發(fā)方法,在分布式系統(tǒng)的各個(gè)節(jié)點(diǎn)之間進(jìn)行消息交換,提高系統(tǒng)節(jié)點(diǎn)狀態(tài)一致性 的收斂速度。
為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于距離的狀態(tài)同步方法,該方法包括以下 步驟1)構(gòu)建網(wǎng)絡(luò)或集群中某一節(jié)點(diǎn)的種子節(jié)點(diǎn),并維護(hù)活節(jié)點(diǎn)列表和死節(jié)點(diǎn)列表;2)在活節(jié)點(diǎn)列表中,根據(jù)各節(jié)點(diǎn)在網(wǎng)絡(luò)中的拓?fù)湮恢?,賦予各節(jié)點(diǎn)不同的距離參數(shù),并 以與距離的平方成反比的概率,選擇不同距離的節(jié)點(diǎn),發(fā)送同步消息;3)隨機(jī)向不可達(dá)節(jié)點(diǎn)發(fā)送同步消息;4)被選擇的節(jié)點(diǎn)不包含種子節(jié)點(diǎn),則隨機(jī)向一個(gè)種子節(jié)點(diǎn)發(fā)送同步消息;5)如活節(jié)點(diǎn)列表中的節(jié)點(diǎn)數(shù)少于種子節(jié)點(diǎn)數(shù),隨機(jī)向一個(gè)種子節(jié)點(diǎn)發(fā)送同步消息。
其中,所述步驟1)構(gòu)建網(wǎng)絡(luò)或集群中某一節(jié)點(diǎn)的種子節(jié)點(diǎn)是將所述網(wǎng)絡(luò)或集群中 所有節(jié)點(diǎn)的種子節(jié)點(diǎn)構(gòu)建成二叉樹的形式。
其中,所述步驟2)中根據(jù)在網(wǎng)絡(luò)中的拓?fù)湮恢?,賦予節(jié)點(diǎn)不同的距離參數(shù)的步驟 進(jìn)一步包括判斷節(jié)點(diǎn)所處的機(jī)架位置和數(shù)據(jù)中心的位置;根據(jù)位置賦予節(jié)點(diǎn)距離參數(shù)。
其中,所述判斷節(jié)點(diǎn)所處的機(jī)架位置和數(shù)據(jù)中心的位置包括根據(jù)系統(tǒng)配置判斷、 根據(jù)網(wǎng)絡(luò)規(guī)劃時(shí)設(shè)定的IP地址規(guī)則判斷或根據(jù)動(dòng)態(tài)統(tǒng)計(jì)判斷。
其中,所述根據(jù)位置賦予節(jié)點(diǎn)距離參數(shù)是依據(jù)網(wǎng)絡(luò)拓?fù)涞木唧w形式賦值,同機(jī)架 的節(jié)點(diǎn)距離參數(shù)為1,不同機(jī)架但相同數(shù)據(jù)中心的節(jié)點(diǎn)距離參數(shù)為2,不同數(shù)據(jù)中心的節(jié)點(diǎn) 距離參數(shù)為3。
本發(fā)明通過考慮節(jié)點(diǎn)在分布式系統(tǒng)網(wǎng)絡(luò)中的拓?fù)湮恢?如機(jī)架、數(shù)據(jù)中心等)信 息,賦予節(jié)點(diǎn)間距離參數(shù),并以與距離的平方成反比的概率,選取不同距離的節(jié)點(diǎn),發(fā)送同 步消息,進(jìn)行狀態(tài)同步。這種基于距離的Gossip消息分發(fā)同步狀態(tài)數(shù)據(jù)的機(jī)制,能夠加快 系統(tǒng)狀態(tài)一致性的收斂速度,提高通訊效率,降低網(wǎng)絡(luò)帶寬和系統(tǒng)負(fù)荷的開銷。
本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變 得顯而易見,或者通過實(shí)施本發(fā)明而了解。
附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,并與本發(fā)明的 實(shí)施例一起,用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中圖1為根據(jù)本發(fā)明的基于距離的狀態(tài)同步方法流程圖; 圖2為一種數(shù)據(jù)中心的拓?fù)浣Y(jié)構(gòu)示意圖; 圖3為根據(jù)本發(fā)明構(gòu)建的種子節(jié)點(diǎn)關(guān)系示意圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí) 施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明的核心內(nèi)容主要是在使用Gossip協(xié)議進(jìn)行同步時(shí),需要根據(jù)距離來選擇 同步節(jié)點(diǎn)。
基于距離選擇同步節(jié)點(diǎn)的規(guī)則是系統(tǒng)或集群中的某節(jié)點(diǎn),對(duì)處于不同網(wǎng)絡(luò)位置4的其他節(jié)點(diǎn),賦予不同的距離參數(shù),節(jié)點(diǎn)被選擇的概率與節(jié)點(diǎn)距離參數(shù)的平方成反比。
圖1為根據(jù)本發(fā)明的基于距離的狀態(tài)同步方法流程圖,下面將參考圖1,對(duì)本發(fā)明 的基于距離的狀態(tài)同步方法進(jìn)行詳細(xì)描述首先,在步驟101,在使用Gossip協(xié)議構(gòu)建對(duì)等系統(tǒng)或重疊網(wǎng)絡(luò)時(shí),一個(gè)節(jié)點(diǎn)新加入 到集群中時(shí),向一個(gè)或多個(gè)節(jié)點(diǎn)發(fā)送第一次消息同步,我們稱這些節(jié)點(diǎn)為種子節(jié)點(diǎn)(Seed Node),同時(shí),每個(gè)節(jié)點(diǎn)維護(hù)兩個(gè)節(jié)點(diǎn)列表一個(gè)是當(dāng)前活節(jié)點(diǎn)列表即可達(dá)節(jié)點(diǎn)列表,另外一 個(gè)是當(dāng)前死節(jié)點(diǎn)列表即不可達(dá)節(jié)點(diǎn)列表。
圖3為根據(jù)本發(fā)明構(gòu)建的種子節(jié)點(diǎn)關(guān)系示意圖,如圖3所示,我們可以把種子節(jié)點(diǎn) 的關(guān)系構(gòu)建成一棵二叉樹的形式,每個(gè)父節(jié)點(diǎn)是其子節(jié)點(diǎn)的種子節(jié)點(diǎn),節(jié)點(diǎn)A是節(jié)點(diǎn)B和C 的種子節(jié)點(diǎn),節(jié)點(diǎn)B是節(jié)點(diǎn)D和E的種子節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)在配置種子節(jié)點(diǎn)時(shí),除了按照二叉 樹的形式來指定種子節(jié)點(diǎn)外,還可以指定其他的種子節(jié)點(diǎn)。
在步驟102,系統(tǒng)或集群中的某節(jié)點(diǎn),對(duì)處于不同網(wǎng)絡(luò)位置的可達(dá)列表中的節(jié)點(diǎn), 賦予不同的節(jié)點(diǎn)距離參數(shù),例如可以設(shè)同機(jī)架的節(jié)點(diǎn)距離參數(shù)為1,不同機(jī)架但相同數(shù)據(jù)中 心的節(jié)點(diǎn)距離參數(shù)為2,不同數(shù)據(jù)中心的節(jié)點(diǎn)距離參數(shù)為3等。判斷節(jié)點(diǎn)是否處于同一機(jī) 架,或同一個(gè)數(shù)據(jù)中心,或不同數(shù)據(jù)中心的方法有多種,例如,可以根據(jù)系統(tǒng)配置判斷,也可 以根據(jù)網(wǎng)絡(luò)規(guī)劃時(shí)設(shè)定的IP地址規(guī)則判斷,還可以根據(jù)動(dòng)態(tài)統(tǒng)計(jì)判斷等等。節(jié)點(diǎn)間的距離 參數(shù),也可以依據(jù)對(duì)網(wǎng)絡(luò)拓?fù)涞木唧w情形,靈活地賦值,其原則是距離越遠(yuǎn),距離參數(shù)越大。
在步驟103,在當(dāng)前活節(jié)點(diǎn)列表(可達(dá)節(jié)點(diǎn)列表)中根據(jù)節(jié)點(diǎn)被選擇的概率與節(jié)點(diǎn)距離 參數(shù)的平方成反比的規(guī)則,選擇發(fā)送同步消息的目標(biāo)節(jié)點(diǎn),并進(jìn)行狀態(tài)同步,同機(jī)架的節(jié)點(diǎn) 被選擇的概率最高,不同數(shù)據(jù)中心的節(jié)點(diǎn)被選擇的概率最低,優(yōu)先讓同機(jī)架的節(jié)點(diǎn)之間進(jìn) 行同步。實(shí)際計(jì)算時(shí),不同距離的節(jié)點(diǎn)數(shù),可以進(jìn)行相應(yīng)的化整處理,例如小于1的節(jié)點(diǎn)數(shù), 視為為1等。
在步驟104,隨機(jī)向一些不可達(dá)的節(jié)點(diǎn)發(fā)送同步消息,嘗試進(jìn)行消息同步。在分布 式環(huán)境下,由于網(wǎng)絡(luò)變的不可靠,可能出現(xiàn)節(jié)點(diǎn)短暫的不可達(dá),該步驟的目的是為了盡早發(fā) 現(xiàn)不可達(dá)的節(jié)點(diǎn)重新可達(dá)。
在步驟105,判斷步驟103所選擇的節(jié)點(diǎn)是否為種子節(jié)點(diǎn),如果是種子節(jié)點(diǎn),轉(zhuǎn)到 步驟107處理;如果不是種子節(jié)點(diǎn),則轉(zhuǎn)到下一步驟。
在步驟106,隨機(jī)向一個(gè)種子節(jié)點(diǎn)發(fā)送同步消息,進(jìn)行同步。在步驟102中所選擇 的節(jié)點(diǎn)可能不包含種子節(jié)點(diǎn),在這種情況下,則以一定的概率隨機(jī)向一個(gè)種子節(jié)點(diǎn)發(fā)送同 步消息,并進(jìn)行同步。因?yàn)榉N子節(jié)點(diǎn)總有比較多的節(jié)點(diǎn)狀態(tài)信息,該步驟可以加快同步的速度。
在步驟107,判斷當(dāng)前活節(jié)點(diǎn)列表中的節(jié)點(diǎn)數(shù)是否小于種子節(jié)點(diǎn)數(shù),如果小于種子 節(jié)點(diǎn),則進(jìn)行下一步驟;如果不小于種子節(jié)點(diǎn)數(shù),轉(zhuǎn)到步驟109結(jié)束本次狀態(tài)同步。
在步驟108,隨機(jī)向一個(gè)種子節(jié)點(diǎn)發(fā)送同步消息,并進(jìn)行狀態(tài)同步。如果當(dāng)前活的 節(jié)點(diǎn)數(shù)少于種子節(jié)點(diǎn)數(shù),以一定概率隨機(jī)向一個(gè)種子節(jié)點(diǎn)發(fā)送同步請(qǐng)求的目的是為了避免 “孤島”的出現(xiàn)。
如果不進(jìn)行上述步驟107和步驟108,很容易出現(xiàn)“孤島”,例如假設(shè)有4臺(tái)機(jī)器, 分別為A,B, C,D,并且配置了它們都是種子節(jié)點(diǎn),即A,B, C,D的種子節(jié)點(diǎn)都包含這4臺(tái)機(jī)器。如果它們同時(shí)啟動(dòng),可能會(huì)出現(xiàn)這樣的情形a)A節(jié)點(diǎn)起來,發(fā)現(xiàn)沒有活著的節(jié)點(diǎn),走到步驟106,和任意一個(gè)種子節(jié)點(diǎn)同步,假設(shè)選 擇了 B;b)B節(jié)點(diǎn)和A完成同步,則認(rèn)為A活著,它將和A同步,由于A是B的種子節(jié)點(diǎn),B將不 再和其他種子節(jié)點(diǎn)同步;c)C節(jié)點(diǎn)起來,發(fā)現(xiàn)沒有活著的節(jié)點(diǎn),同樣走到步驟106,和任意一個(gè)種子節(jié)點(diǎn)同步,假 設(shè)這次選擇了 D ;d)D節(jié)點(diǎn)和C完成同步,認(rèn)為C活著,則它將和C同步,由于C是D的種子節(jié)點(diǎn),所以D 也不再和其他種子節(jié)點(diǎn)同步。
這時(shí)就形成了兩個(gè)孤島,A和B互相同步,C和D之間互相同步,但是{A,B}和{C,D} 之間將不再互相同步,它們也就不知道對(duì)方的存在了。加入步驟107和步驟108后,A和B 同步完成,發(fā)現(xiàn)只有一個(gè)節(jié)點(diǎn)活著,但是種子節(jié)點(diǎn)有4個(gè),這時(shí)會(huì)再和其他任意一個(gè)種子節(jié) 點(diǎn)通信,從而打破這個(gè)孤島。
本發(fā)明能夠讓同機(jī)架的節(jié)點(diǎn)之間快速的進(jìn)行同步,減少跨機(jī)架,跨數(shù)據(jù)中心的通 訊次數(shù),占用更小的網(wǎng)絡(luò)帶寬,使跨機(jī)架,跨數(shù)據(jù)中心的節(jié)點(diǎn)之間在進(jìn)行同步時(shí),具有本機(jī) 架或本數(shù)據(jù)中心最新的更完整的數(shù)據(jù),加快整個(gè)集群網(wǎng)絡(luò)狀態(tài)一致性收斂的速度。
另外,合理構(gòu)建種子節(jié)點(diǎn),也能在此基礎(chǔ)上更加加快收斂的速度。節(jié)點(diǎn)每次進(jìn)行同 步時(shí),都以一定概率(與種子節(jié)點(diǎn)進(jìn)行消息同步,因?yàn)榉N子節(jié)點(diǎn)理論上具有最多節(jié)點(diǎn)的狀態(tài) 信息。而且所有節(jié)點(diǎn)通過種子節(jié)點(diǎn),形成了一種關(guān)聯(lián)關(guān)系,與隨機(jī)選擇形成了一定的互補(bǔ)。
凡是基于P2P的分布式系統(tǒng)中,利用Gossip或其他協(xié)議進(jìn)行狀態(tài)同步、信息交換, 或鄰居節(jié)點(diǎn)選擇時(shí),都可以用到本發(fā)明。本發(fā)明包含但不限于下面的兩種使用情況。
1. P2P視頻分享基于P2P的流媒體直播中,每個(gè)節(jié)點(diǎn)與附近的節(jié)點(diǎn)之間共享媒體數(shù)據(jù),節(jié)點(diǎn)之間需要 定期的更新各自的狀態(tài)。利用本發(fā)明,通過動(dòng)態(tài)統(tǒng)計(jì),將距離本節(jié)點(diǎn)較近的一些節(jié)點(diǎn),歸于 在“同一個(gè)機(jī)架”中。在選擇節(jié)點(diǎn)進(jìn)行狀態(tài)同步時(shí),能夠選擇距離自己較近的這些節(jié)點(diǎn)進(jìn)行 更新,然后根據(jù)數(shù)據(jù)調(diào)度算法,選擇合適的“鄰居”,請(qǐng)求得到相應(yīng)的數(shù)據(jù)。不會(huì)出現(xiàn)由于隨 機(jī)選擇,將兩個(gè)距離很遠(yuǎn)、鏈接質(zhì)量很差的節(jié)點(diǎn)調(diào)度成為內(nèi)容共享,大大影響系統(tǒng)的服務(wù)質(zhì) 量。
2. VoIP通訊里的消息交互基于IP網(wǎng)絡(luò)的語音通信(VoIP)是一種全新的網(wǎng)絡(luò)電話通信業(yè)務(wù),它和傳統(tǒng)的PSTN電 話業(yè)務(wù)相比有著擴(kuò)展性好、部署方便、價(jià)格低廉等明顯的優(yōu)點(diǎn)。在全球范圍內(nèi)的VoIP應(yīng)用 中,由于通訊各方可能處于不同的網(wǎng)絡(luò)狀況下,采用本發(fā)明,將執(zhí)行話音包中轉(zhuǎn)的服務(wù)器的 狀態(tài)信息,在整個(gè)網(wǎng)絡(luò)中進(jìn)行快速的傳播,然后動(dòng)態(tài)自適應(yīng)地根據(jù)通訊雙方網(wǎng)絡(luò)進(jìn)行鏈路 通知及消息轉(zhuǎn)發(fā),提供更高質(zhì)量的服務(wù)。
本領(lǐng)域普通技術(shù)人員可以理解以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用 于限制本發(fā)明,盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,對(duì)于本領(lǐng)域的技術(shù)人員 來說,其依然可以對(duì)前述各實(shí)施例記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn) 行等同替換。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含 在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于距離的狀態(tài)同步方法,該方法包括以下步驟1)構(gòu)建網(wǎng)絡(luò)或集群中某一節(jié)點(diǎn)的種子節(jié)點(diǎn),并維護(hù)活節(jié)點(diǎn)列表和死節(jié)點(diǎn)列表;2)在活節(jié)點(diǎn)列表中,根據(jù)在網(wǎng)絡(luò)中的位置,賦予各節(jié)點(diǎn)不同的距離參數(shù),并以與距離的 平方成反比的概率,選擇不同距離的節(jié)點(diǎn),發(fā)送同步消息;3)隨機(jī)向不可達(dá)節(jié)點(diǎn)發(fā)送同步消息;4)如被選擇的節(jié)點(diǎn)不包含種子節(jié)點(diǎn),隨機(jī)向一個(gè)種子節(jié)點(diǎn)發(fā)送同步消息;5)如活節(jié)點(diǎn)列表中的節(jié)點(diǎn)數(shù)少于種子節(jié)點(diǎn)數(shù),隨機(jī)向一個(gè)種子節(jié)點(diǎn)發(fā)送同步消息。
2.根據(jù)權(quán)利要求1所述的基于距離的狀態(tài)同步方法,其特征在于,所述步驟1)構(gòu)建網(wǎng) 絡(luò)或集群中某一節(jié)點(diǎn)的種子節(jié)點(diǎn)是將所有節(jié)點(diǎn)的種子節(jié)點(diǎn)構(gòu)成的拓?fù)浣Y(jié)構(gòu)為二叉樹形式。
3.根據(jù)權(quán)利要求1所述的基于距離的狀態(tài)同步方法,其特征在于,所述步驟2)中根據(jù) 在網(wǎng)絡(luò)中的位置,賦予各節(jié)點(diǎn)不同的距離參數(shù)的步驟進(jìn)一步包括判斷節(jié)點(diǎn)所處的機(jī)架位 置和數(shù)據(jù)中心的位置;根據(jù)位置賦予節(jié)點(diǎn)距離參數(shù)。
4.根據(jù)權(quán)利要求3所述的基于距離的狀態(tài)同步方法,其特征在于,所述判斷節(jié)點(diǎn)所處 的機(jī)架位置和數(shù)據(jù)中心的位置包括根據(jù)系統(tǒng)配置判斷、根據(jù)網(wǎng)絡(luò)規(guī)劃時(shí)設(shè)定的IP地址規(guī) 則判斷或根據(jù)動(dòng)態(tài)統(tǒng)計(jì)判斷。
5.根據(jù)權(quán)利要求3所述的基于距離的狀態(tài)同步方法,其特征在于,所述根據(jù)位置賦予 節(jié)點(diǎn)距離參數(shù)是依據(jù)網(wǎng)絡(luò)拓?fù)涞木唧w形式賦值;同機(jī)架的節(jié)點(diǎn)距離參數(shù)為1,不同機(jī)架但 相同數(shù)據(jù)中心的節(jié)點(diǎn)距離參數(shù)為2,不同數(shù)據(jù)中心的節(jié)點(diǎn)距離參數(shù)為3。
全文摘要
一種基于距離的狀態(tài)同步方法,該方法包括以下步驟構(gòu)建網(wǎng)絡(luò)或集群中某一節(jié)點(diǎn)的種子節(jié)點(diǎn),并維護(hù)活節(jié)點(diǎn)列表和死節(jié)點(diǎn)列表;在活節(jié)點(diǎn)列表中,根據(jù)在網(wǎng)絡(luò)中的位置,賦予各節(jié)點(diǎn)不同的距離參數(shù),并以與距離的平方成反比的概率,選擇不同距離的節(jié)點(diǎn),發(fā)送同步消息;以一定概率隨機(jī)向不可達(dá)節(jié)點(diǎn)發(fā)送同步消息;如被選擇的節(jié)點(diǎn)不包含種子節(jié)點(diǎn),以一定概率隨機(jī)向一個(gè)種子節(jié)點(diǎn)發(fā)送同步消息;如活節(jié)點(diǎn)列表中的節(jié)點(diǎn)數(shù)少于種子節(jié)點(diǎn)數(shù),以一定概率隨機(jī)向一個(gè)種子節(jié)點(diǎn)發(fā)送同步消息,進(jìn)行狀態(tài)同步。本發(fā)明基于距離的狀態(tài)同步方法,能夠加快系統(tǒng)狀態(tài)一致收斂的速度,提高通訊的效率,降低對(duì)帶寬和系統(tǒng)的開銷。
文檔編號(hào)H04L29/08GK102035894SQ20101061067
公開日2011年4月27日 申請(qǐng)日期2010年12月29日 優(yōu)先權(quán)日2010年12月29日
發(fā)明者劉為懷, 張?jiān)S, 張衛(wèi)平, 張松波, 楊立輝, 饒春平 申請(qǐng)人:北京播思軟件技術(shù)有限公司