一種令牌的處理方法、裝置及消息處理集群的制作方法
【專利摘要】本發(fā)明適用于網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,提供了一種令牌的處理方法、裝置及消息處理集群,所述方法包括:在消息處理集群的應(yīng)用層建立令牌環(huán)路;當(dāng)節(jié)點(diǎn)加入或者退出令牌環(huán)路時,采用簡單多數(shù)投票算法產(chǎn)生或銷毀令牌;在令牌的傳遞過程中,監(jiān)測令牌環(huán)路中的各個節(jié)點(diǎn)上次傳出令牌的時間戳,若監(jiān)測到有節(jié)點(diǎn)上次傳出令牌的時間戳與當(dāng)前時間的時間差超出設(shè)定的回環(huán)時間,則發(fā)起路由發(fā)現(xiàn)過程,重建令牌環(huán)路。本發(fā)明,避免了消息處理集群中出現(xiàn)2個或者2個以上的令牌環(huán)路;另外,對各個節(jié)點(diǎn)的令牌回環(huán)時間進(jìn)行監(jiān)視,解決了現(xiàn)有技術(shù),令牌環(huán)路中令牌的丟失無法監(jiān)管等難題的同時,大大提高了分布式集群系統(tǒng)的可靠性。
【專利說明】一種令牌的處理方法、裝置及消息處理集群
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,尤其涉及一種令牌的處理方法、裝置及消息處理集群。
【背景技術(shù)】
[0002] 隨著網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)展,分布式系統(tǒng)被廣泛應(yīng)用,同時也帶來了分布式協(xié)商一 致性的問題。一致性問題主要表現(xiàn)為數(shù)據(jù)一致性、邏輯一致性和時序一致性,解決一致性問 題主要是確保分布式系統(tǒng)在同時訪問和控制一個資源時,能夠協(xié)調(diào)一致,保證訪問的正確 性(無死鎖和無饑餓現(xiàn)象)?;コ馐欠植际较到y(tǒng)解決一致性問題的關(guān)鍵。通常分布式系統(tǒng) 使用的互斥算法有:集中式算法、分布式算法和令牌環(huán)算法。
[0003] 集中式算法選擇一個進(jìn)程作為協(xié)調(diào)器,用于協(xié)調(diào)臨界區(qū)的進(jìn)入。
[0004] 特點(diǎn):協(xié)調(diào)器在同一時間只允許一個進(jìn)程進(jìn)入臨界區(qū),故能保證互斥。因為請求 消息是順序排隊得,不會出現(xiàn)"餓死"現(xiàn)象。但是單一的協(xié)調(diào)器是其瓶頸。
[0005] 分布式算法的思想是:對想進(jìn)入臨界區(qū)的進(jìn)程首先建立一個消息,該消息包括待 進(jìn)入的臨界區(qū)名、進(jìn)程名和時間戳。一個進(jìn)程接收到消息后,會有如下操作:如果不在臨界 區(qū)內(nèi)且不想進(jìn)入臨界區(qū)則回復(fù)一個消息;如果在臨界區(qū)內(nèi)則不回復(fù)消息,將請求消息放入 隊列,如果不在臨界區(qū),但想進(jìn)入臨界區(qū),則比較想進(jìn)入臨界區(qū)的進(jìn)程的時間戳,時間戳小 的進(jìn)程進(jìn)入臨界區(qū)。
[0006] 特點(diǎn):算法復(fù)雜,易出現(xiàn)"餓死"現(xiàn)象,且系統(tǒng)不健壯;但它從理論上表明了算法 的可行性,必將發(fā)展出實(shí)際可行的算法。
[0007] 令牌環(huán)算法的思想是:整個系統(tǒng)只有一塊令牌,只有令牌持有者才具有進(jìn)入臨界 區(qū)的資格。當(dāng)進(jìn)程i從進(jìn)程i_l接到令牌時,它檢查是否想進(jìn)入臨界區(qū),如果是,則進(jìn)入, 待其推出后,將令牌傳遞給進(jìn)程i+ 1 ;如果不想進(jìn)入,則直接把令牌向下傳遞。
[0008] 特點(diǎn):一是令牌易丟失,事實(shí)上檢測令牌丟失是很困難的;二是容易出現(xiàn)進(jìn)程故 障,且進(jìn)程故障比較不容易恢復(fù)。
【發(fā)明內(nèi)容】
[0009] 本發(fā)明實(shí)施例提供了一種令牌的處理方法、裝置及消息處理集群,旨在解決現(xiàn)有 技術(shù)提供的互斥算法,令牌丟失難以監(jiān)控、進(jìn)程崩潰難以恢復(fù)的問題。
[0010] 一方面,提供一種令牌的處理方法,所述方法包括:
[0011] 在消息處理集群的應(yīng)用層建立令牌環(huán)路;
[0012] 當(dāng)節(jié)點(diǎn)加入或者退出令牌環(huán)路時,采用簡單多數(shù)投票算法產(chǎn)生或銷毀令牌;
[0013] 在令牌的傳遞過程中,監(jiān)測令牌環(huán)路中的各個節(jié)點(diǎn)上次傳出令牌的時間戳,若監(jiān) 測到有節(jié)點(diǎn)上次傳出令牌的時間戳與當(dāng)前時間的時間差超出設(shè)定的回環(huán)時間,則發(fā)起路由 發(fā)現(xiàn)過程,重建令牌環(huán)路。
[0014] 進(jìn)一步地,所述簡單多數(shù)投票算法產(chǎn)生或銷毀令牌包括:
[0015] 預(yù)設(shè)消息處理集群中的節(jié)點(diǎn)數(shù)量為N,N為大于等于1的整數(shù);
[0016] 當(dāng)監(jiān)測到有節(jié)點(diǎn)加入由消息處理集群中的N個節(jié)點(diǎn)組成的令牌環(huán)路或者退出所 述令牌環(huán)路時,動態(tài)計算所述令牌環(huán)路內(nèi)的節(jié)點(diǎn)數(shù)量P;
[0017] 當(dāng)P大于(N+2)/2舍尾取整值時,若令牌環(huán)路內(nèi)無令牌,則自動產(chǎn)生新的令牌;
[0018] 若令牌環(huán)路內(nèi)有令牌,則維持原令牌;
[0019] 當(dāng)P小于等于(N+2)/2舍尾取整值時,若令牌環(huán)路內(nèi)有令牌,則銷毀該令牌。
[0020] 進(jìn)一步地,在所述當(dāng)P小于等于(N+2) /2舍尾取整值時,還包括:
[0021] 若令牌環(huán)路內(nèi)無令牌,則系統(tǒng)掛起,等待新的節(jié)點(diǎn)加入所述消息處理集群中。
[0022] 進(jìn)一步地,所述消息處理集群中的節(jié)點(diǎn)包括投票站節(jié)點(diǎn)、普通站節(jié)點(diǎn)和監(jiān)控站節(jié) 點(diǎn)。
[0023] 另一方面,提供一種令牌的處理裝置,所述裝置包括:
[0024] 令牌環(huán)路建立單元,用于在消息處理集群的應(yīng)用層建立令牌環(huán)路;
[0025] 令牌產(chǎn)生或者銷毀單元,用于當(dāng)節(jié)點(diǎn)加入或者退出令牌環(huán)路時,采用簡單多數(shù)投 票算法產(chǎn)生或銷毀令牌;
[0026] 令牌回環(huán)時間監(jiān)測單元,用于在令牌的傳遞過程中,監(jiān)測令牌環(huán)路中的各個節(jié)點(diǎn) 上次傳出令牌的時間戳,若監(jiān)測到有節(jié)點(diǎn)上次傳出令牌的時間戳與當(dāng)前時間的時間差超出 設(shè)定的回環(huán)時間,則發(fā)起路由發(fā)現(xiàn)過程,重建令牌環(huán)路。
[0027] 進(jìn)一步地,所述令牌產(chǎn)生或者銷毀單元包括:
[0028] 節(jié)點(diǎn)數(shù)量預(yù)設(shè)模塊,用于預(yù)設(shè)消息處理集群中的節(jié)點(diǎn)數(shù)量為N,N為大于等于1的 整數(shù);
[0029] 節(jié)點(diǎn)數(shù)量統(tǒng)計模塊,用于當(dāng)監(jiān)測到有節(jié)點(diǎn)加入由消息處理集群中的N個節(jié)點(diǎn)組成 的令牌環(huán)路或者退出所述令牌環(huán)路時,動態(tài)計算所述令牌環(huán)路內(nèi)的節(jié)點(diǎn)數(shù)量P;
[0030] 令牌產(chǎn)生模塊,用于當(dāng)P大于(N+2)/2舍尾取整值時,若令牌環(huán)路內(nèi)無令牌,則自 動產(chǎn)生新的令牌;
[0031] 令牌維持模塊,用于若令牌環(huán)路內(nèi)有令牌,則維持原令牌;
[0032] 令牌銷毀模塊,用于當(dāng)P小于等于(N+2)/2舍尾取整值時,若令牌環(huán)路內(nèi)有令牌, 則銷毀該令牌。
[0033] 進(jìn)一步地,所述令牌產(chǎn)生或者銷毀單元還包括:
[0034] 節(jié)點(diǎn)加入等待模塊,用于若令牌環(huán)路內(nèi)無令牌,則系統(tǒng)掛起,等待新的節(jié)點(diǎn)加入所 述消息處理集群中。
[0035] 進(jìn)一步地,所述裝置內(nèi)置于消息處理集群中的相應(yīng)節(jié)點(diǎn)中,所述消息處理集群中 的節(jié)點(diǎn)包括投票站節(jié)點(diǎn)、普通站節(jié)點(diǎn)和監(jiān)控站節(jié)點(diǎn)。
[0036] 再一方面,提供一種消息處理集群,所述消息處理集群中包括投票站節(jié)點(diǎn)、普通站 節(jié)點(diǎn)和監(jiān)控站節(jié)點(diǎn),所述消息處理集群中的相應(yīng)節(jié)點(diǎn)中內(nèi)置有如上所述的令牌的處理裝 置。
[0037] 在本發(fā)明實(shí)施例,在消息處理集群的應(yīng)用層建立令牌環(huán)路后,當(dāng)節(jié)點(diǎn)加入或者退 出該令牌環(huán)路時,采用簡單多數(shù)投票算法產(chǎn)生或銷毀令牌,避免了消息處理集群中出現(xiàn)2 個或者2個以上的令牌環(huán)路;另外,對各個節(jié)點(diǎn)的令牌回環(huán)時間進(jìn)行監(jiān)視,以及時發(fā)現(xiàn)令牌 是否丟失,并在令牌丟失時,重建令牌環(huán)路,解決了現(xiàn)有技術(shù),令牌環(huán)路中令牌的丟失無法 監(jiān)管等難題的同時,大大提高了分布式集群系統(tǒng)的可靠性。
【專利附圖】
【附圖說明】
[0038] 圖1是本發(fā)明實(shí)施例一提供的令牌的處理方法的實(shí)現(xiàn)流程圖;
[0039] 圖2是本發(fā)明實(shí)施例一提供的路由發(fā)現(xiàn)過程的實(shí)現(xiàn)流程圖;
[0040] 圖3是本發(fā)明實(shí)施例一提供的路由同步過程的實(shí)現(xiàn)流程圖;
[0041]圖4是本發(fā)明實(shí)施例一提供的令牌檢查過程的實(shí)現(xiàn)流程圖;
[0042] 圖5是本發(fā)明實(shí)施例一提供的令牌產(chǎn)生過程的實(shí)現(xiàn)流程圖;
[0043] 圖6是本發(fā)明實(shí)施例一提供的令牌傳遞過程的實(shí)現(xiàn)流程圖;
[0044] 圖7是本發(fā)明實(shí)施例二提供的令牌的處理裝置的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0045] 為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。
[0046] 在本發(fā)明實(shí)施例中,在消息處理集群的應(yīng)用層建立令牌環(huán)路;當(dāng)節(jié)點(diǎn)加入或者退 出令牌環(huán)路時,采用簡單多數(shù)投票算法產(chǎn)生或銷毀令牌;在令牌的傳遞過程中,監(jiān)測令牌環(huán) 路中的各個節(jié)點(diǎn)上次傳出令牌的時間戳,若監(jiān)測到有節(jié)點(diǎn)上次傳出令牌的時間戳與當(dāng)前時 間的時間差超出設(shè)定的回環(huán)時間,則發(fā)起路由發(fā)現(xiàn)過程,重建令牌環(huán)路。
[0047] 以下結(jié)合具體實(shí)施例對本發(fā)明的實(shí)現(xiàn)進(jìn)行詳細(xì)描述:
[0048]實(shí)施例一
[0049]圖1示出了本發(fā)明實(shí)施例一提供的令牌的處理方法的實(shí)現(xiàn)流程,詳述如下:
[0050] 在步驟S101中,在消息處理集群的應(yīng)用層建立令牌環(huán)路。
[0051] 在步驟S102中,當(dāng)節(jié)點(diǎn)加入或者退出令牌環(huán)路時,采用簡單多數(shù)投票算法產(chǎn)生或 銷毀令牌。
[0052] 在本發(fā)明實(shí)施例中,為了避免消息處理集群分裂為兩個或者兩個以上的邏輯環(huán)路 進(jìn)行序列化工作的"腦裂"現(xiàn)象,因此采用" (N+2)/2簡單多數(shù)"的投票算法自動產(chǎn)生與銷毀 令牌,簡單多數(shù)投票算法的算法如下:
[0053] 預(yù)設(shè)消息處理集群中的節(jié)點(diǎn)數(shù)量為N,N為大于等于1的整數(shù),當(dāng)監(jiān)測到有節(jié)點(diǎn)加 入由消息處理集群中的N個節(jié)點(diǎn)組成的令牌環(huán)路或者退出所述令牌環(huán)路時,動態(tài)計算所述 令牌環(huán)路內(nèi)的節(jié)點(diǎn)數(shù)量P,當(dāng)P大于(N+2) /2舍尾取整值時,若令牌環(huán)路內(nèi)無令牌,則自動產(chǎn) 生新的令牌;若令牌環(huán)路內(nèi)有令牌,則維持原令牌;當(dāng)P小于等于(N+2)/2舍尾取整值時, 若令牌環(huán)路內(nèi)有令牌,則銷毀該令牌,若令牌環(huán)路內(nèi)無令牌,則系統(tǒng)掛起,等待新的節(jié)點(diǎn)加 入所述消息處理集群中。
[0054] 根據(jù)以上簡單多數(shù)投票算法,奇數(shù)臺主機(jī)(節(jié)點(diǎn))容災(zāi)能力比奇數(shù)+1的偶數(shù)臺主 機(jī)還要強(qiáng),所以在實(shí)際部署時一般采用奇數(shù)臺主機(jī)組成消息處理集群。對于3臺消息處理 集群可容災(zāi)1臺機(jī)器故障,5臺消息處理集群可容1臺故障或2臺同時故障,以此類推,此簡 單多數(shù)投票算法只容少數(shù)機(jī)器節(jié)點(diǎn)的災(zāi)難與故障,但相對單機(jī)來說,提升了可靠性。以下分 別以3臺、5臺、7臺為例計算消息處理集群的故障率。
[0055]前提:
[0056] 1)、所有節(jié)點(diǎn)主機(jī)的出現(xiàn)故障的概率大致相同,即故障率為q。
[0057]2)、假設(shè)主機(jī)在100天內(nèi)出現(xiàn)1次故障,則計算該主機(jī)的故障率q為1%,依次類 推。
[0058] 3)、假設(shè)所有主機(jī)的故障率q不超過10%,S卩10天內(nèi)出現(xiàn)小于1次故障。
【權(quán)利要求】
1. 一種令牌的處理方法,其特征在于,所述方法包括: 在消息處理集群的應(yīng)用層建立令牌環(huán)路; 當(dāng)節(jié)點(diǎn)加入或者退出令牌環(huán)路時,采用簡單多數(shù)投票算法產(chǎn)生或銷毀令牌; 在令牌的傳遞過程中,監(jiān)測令牌環(huán)路中的各個節(jié)點(diǎn)上次傳出令牌的時間戳,若監(jiān)測到 有節(jié)點(diǎn)上次傳出令牌的時間戳與當(dāng)前時間的時間差超出設(shè)定的回環(huán)時間,則發(fā)起路由發(fā)現(xiàn) 過程,重建令牌環(huán)路。
2. 如權(quán)利要求1所述的方法,其特征在于,所述簡單多數(shù)投票算法產(chǎn)生或銷毀令牌包 括: 預(yù)設(shè)消息處理集群中的節(jié)點(diǎn)數(shù)量為N,N為大于等于1的整數(shù); 當(dāng)監(jiān)測到有節(jié)點(diǎn)加入由消息處理集群中的N個節(jié)點(diǎn)組成的令牌環(huán)路或者退出所述令 牌環(huán)路時,動態(tài)計算所述令牌環(huán)路內(nèi)的節(jié)點(diǎn)數(shù)量P ; 當(dāng)P大于(N+2)/2舍尾取整值時,若令牌環(huán)路內(nèi)無令牌,則自動產(chǎn)生新的令牌; 若令牌環(huán)路內(nèi)有令牌,則維持原令牌; 當(dāng)P小于等于(化2)/2舍尾取整值時,若令牌環(huán)路內(nèi)有令牌,則銷毀該令牌。
3. 如權(quán)利要求1或2所述的方法,其特征在于,在所述當(dāng)P小于等于(化2)/2舍尾取整 值時,還包括: 若令牌環(huán)路內(nèi)無令牌,則系統(tǒng)掛起,等待新的節(jié)點(diǎn)加入所述消息處理集群中。
4. 如權(quán)利要求1或2所述的方法,其特征在于,所述消息處理集群中的節(jié)點(diǎn)包括投票站 節(jié)點(diǎn)、普通站節(jié)點(diǎn)和監(jiān)控站節(jié)點(diǎn)。
5. -種令牌的處理裝置,其特征在于,所述裝置包括: 令牌環(huán)路建立單元,用于在消息處理集群的應(yīng)用層建立令牌環(huán)路; 令牌產(chǎn)生或者銷毀單元,用于當(dāng)節(jié)點(diǎn)加入或者退出令牌環(huán)路時,采用簡單多數(shù)投票算 法產(chǎn)生或銷毀令牌; 令牌回環(huán)時間監(jiān)測單元,用于在令牌的傳遞過程中,監(jiān)測令牌環(huán)路中的各個節(jié)點(diǎn)上次 傳出令牌的時間戳,若監(jiān)測到有節(jié)點(diǎn)上次傳出令牌的時間戳與當(dāng)前時間的時間差超出設(shè)定 的回環(huán)時間,則發(fā)起路由發(fā)現(xiàn)過程,重建令牌環(huán)路。
6. 如權(quán)利要求5所述的裝置,其特征在于,所述令牌產(chǎn)生或者銷毀單元包括: 節(jié)點(diǎn)數(shù)量預(yù)設(shè)模塊,用于預(yù)設(shè)消息處理集群中的節(jié)點(diǎn)數(shù)量為N,N為大于等于1的整 數(shù); 節(jié)點(diǎn)數(shù)量統(tǒng)計模塊,用于當(dāng)監(jiān)測到有節(jié)點(diǎn)加入由消息處理集群中的N個節(jié)點(diǎn)組成的令 牌環(huán)路或者退出所述令牌環(huán)路時,動態(tài)計算所述令牌環(huán)路內(nèi)的節(jié)點(diǎn)數(shù)量P ; 令牌產(chǎn)生模塊,用于當(dāng)P大于(化2)/2舍尾取整值時,若令牌環(huán)路內(nèi)無令牌,則自動產(chǎn) 生新的令牌; 令牌維持模塊,用于若令牌環(huán)路內(nèi)有令牌,則維持原令牌; 令牌銷毀模塊,用于當(dāng)P小于等于(化2)/2舍尾取整值時,若令牌環(huán)路內(nèi)有令牌,則銷 毀該令牌。
7. 如權(quán)利要求5或6所述的裝置,其特征在于,所述令牌產(chǎn)生或者銷毀單元還包括: 節(jié)點(diǎn)加入等待模塊,用于若令牌環(huán)路內(nèi)無令牌,則系統(tǒng)掛起,等待新的節(jié)點(diǎn)加入所述消 息處理集群中。
8. 如權(quán)利要求5或6所述的裝置,其特征在于,所述裝置內(nèi)置于消息處理集群中的相應(yīng) 節(jié)點(diǎn)中,所述消息處理集群中的節(jié)點(diǎn)包括投票站節(jié)點(diǎn)、普通站節(jié)點(diǎn)和監(jiān)控站節(jié)點(diǎn)。
9. 一種消息處理集群,其特征在于,所述消息處理集群中包括投票站節(jié)點(diǎn)、普通站節(jié)點(diǎn) 和監(jiān)控站節(jié)點(diǎn),所述消息處理集群中的相應(yīng)節(jié)點(diǎn)中內(nèi)置有如權(quán)利要求5至8任一項所述的 令牌的處理裝置。
【文檔編號】H04L12/757GK104468302SQ201410550612
【公開日】2015年3月25日 申請日期:2014年10月16日 優(yōu)先權(quán)日:2014年10月16日
【發(fā)明者】何萬剛 申請人:深圳市金證科技股份有限公司