一種面向構(gòu)件的混合型云操作系統(tǒng)體系結(jié)構(gòu)及其通信方法
【專利摘要】本發(fā)明提供一種面向構(gòu)件的混合型云操作系統(tǒng)體系結(jié)構(gòu)及其通信方法,基于層次、對象和消息模型建立混合型架構(gòu),并采用面向構(gòu)件思想對組成構(gòu)件及其處理環(huán)境進(jìn)行管理,在此基礎(chǔ)上,對構(gòu)件處理集群進(jìn)行高效路由、讀寫分離和負(fù)載均衡,滿足對云操作系統(tǒng)地的開放兼容、松耦合和可擴(kuò)展需求,解決現(xiàn)有云操作系統(tǒng)的自管理問題、構(gòu)件水平伸縮問題和有狀態(tài)構(gòu)件的高可用問題,與現(xiàn)有技術(shù)相比,本發(fā)明提出的面向構(gòu)件的混合型架構(gòu)完善了開放兼容、可擴(kuò)展、松耦合的構(gòu)件化云操作系統(tǒng)體系結(jié)構(gòu),并通過構(gòu)件水平伸縮集群和高可用集群的通信方法保障了云操作系統(tǒng)的可伸縮性和高可用性。
【專利說明】一種面向構(gòu)件的混合型云操作系統(tǒng)體系結(jié)構(gòu)及其通信方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及云計(jì)算領(lǐng)域,,具體地說是一種面向構(gòu)件的混合型云操作系統(tǒng)體系結(jié)構(gòu)及其通信方法。
【背景技術(shù)】
[0002]隨著云計(jì)算的興起,傳統(tǒng)的數(shù)據(jù)中心迅速向云數(shù)據(jù)中心轉(zhuǎn)型。在數(shù)據(jù)中心從初級向高級形態(tài)演進(jìn)的物理資源整合、應(yīng)用與虛擬化接合、自動化管理、數(shù)據(jù)中心協(xié)同四個(gè)階段中,云操作系統(tǒng)(COS, Cloud Operating System)發(fā)揮著重要作用,承擔(dān)著對上接口應(yīng)用、對下管理硬件的中間功能,將大量的異構(gòu)設(shè)備融合為邏輯資源池,動態(tài)調(diào)度給云應(yīng)用,完成對終端的服務(wù)。
[0003]云數(shù)據(jù)中心環(huán)境具有動態(tài)、異構(gòu)、大規(guī)模和單點(diǎn)易失效的特征,因此,COS需采用廣泛兼容的開放架構(gòu),既考慮對第三方軟硬件的兼容性,也將二次開發(fā)納入其中,提供完善標(biāo)準(zhǔn)的接口 API ;針對云計(jì)算環(huán)境對功能的動態(tài)變化需求,COS需采用可擴(kuò)展的構(gòu)件化設(shè)計(jì),在虛擬化、資源調(diào)度等基本構(gòu)件基礎(chǔ)上,便于運(yùn)維管理、計(jì)量計(jì)費(fèi)和自助服務(wù)等構(gòu)件的增值開發(fā)和按需部署;此外,COS還要采用伸縮性和高可用設(shè)計(jì),達(dá)到云計(jì)算追求的規(guī)模擴(kuò)展和業(yè)務(wù)連續(xù)性目標(biāo)。
[0004]針對云數(shù)據(jù)中心對COS的松耦合、可擴(kuò)展、可伸縮和高可用需求,采用傳統(tǒng)OS的單一模塊架構(gòu)可以實(shí)現(xiàn)COS模塊間的高效調(diào)用,但耦合緊密、結(jié)構(gòu)復(fù)雜,系統(tǒng)難于擴(kuò)展;采用層次架構(gòu)可以使各模塊間的組織結(jié)構(gòu)和依賴關(guān)系清晰化,提高COS的可靠性、可移植性和維護(hù)性,但軟件棧層次太深使得內(nèi)核過于龐大,并且模塊間的耦合程度仍然較高,不適于構(gòu)建分布處理環(huán)境;在上述架構(gòu)基礎(chǔ)上,開源軟件OpenStack和CloudStack基于消息隊(duì)列建立了松耦合的云管理架構(gòu),但缺乏面向構(gòu)件的設(shè)計(jì),無法控制構(gòu)件生命周期,需要組成模塊自行考慮伸縮和高可用方式,加重了模塊的開發(fā)部署負(fù)擔(dān)和運(yùn)行開銷。遵循高內(nèi)聚低耦合原則,應(yīng)該從COS層面增加對構(gòu)件的管理并保障其可擴(kuò)展性、可伸縮性和高可用性,這其中主要面對的問題是:
1.當(dāng)前的云操作系統(tǒng)缺乏自包含性,無法對組成構(gòu)件進(jìn)行描述和管理,也無法對其處理環(huán)境進(jìn)行動態(tài)監(jiān)控;
2.針對構(gòu)件的高可用處理集群,現(xiàn)有通信協(xié)議基于構(gòu)件的無狀態(tài)性假設(shè)設(shè)計(jì),缺乏讀寫分離機(jī)制和負(fù)載均衡策略,無法實(shí)現(xiàn)對有狀態(tài)構(gòu)件處理集群的高可用和高性能支持;
3.針對構(gòu)件的水平伸縮(scale-out)處理集群,現(xiàn)有基于樹的路由算法效率受到關(guān)鍵字規(guī)模擴(kuò)大的影響,而基于Hash的路由算法在節(jié)點(diǎn)變化時(shí)會造成大量的數(shù)據(jù)移動,并且缺乏均衡異構(gòu)節(jié)點(diǎn)負(fù)載的數(shù)據(jù)分布方法。
[0005]因此,如何在COS中提供對構(gòu)件及其處理集群的管理和監(jiān)控機(jī)制,以及實(shí)現(xiàn)消息的高效路由和負(fù)載均衡,成為COS架構(gòu)中亟待解決的技術(shù)問題。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的是提供一種面向構(gòu)件的混合型云操作系統(tǒng)體系結(jié)構(gòu)及其通信方法。
[0007]本發(fā)明的目的是按以下方式實(shí)現(xiàn)的,基于層次、對象和消息模型建立混合型架構(gòu),并采用面向構(gòu)件思想對組成構(gòu)件及其處理環(huán)境進(jìn)行管理,在此基礎(chǔ)上,對構(gòu)件處理集群進(jìn)行高效路由、讀寫分離和負(fù)載均衡,滿足對云操作系統(tǒng)地的開放兼容、松耦合和可擴(kuò)展需求,解決現(xiàn)有云操作系統(tǒng)的自管理問題、構(gòu)件水平伸縮問題和有狀態(tài)構(gòu)件的高可用問題,
從層次模型角度,系統(tǒng)自上至下分為門戶層、邏輯層、適配層和實(shí)現(xiàn)層,各層相對獨(dú)立,通過在各層分別定義標(biāo)準(zhǔn)接口增強(qiáng)開放性,通過在各層適配不同功能實(shí)現(xiàn)增強(qiáng)兼容性;
從對象模型角度,云操作系統(tǒng)由云門戶、云管理門戶、云資源管理、監(jiān)控管理、計(jì)量計(jì)費(fèi)、業(yè)務(wù)審批、授權(quán)認(rèn)證功能模塊組成,各功能組件通過基于Rest消息的調(diào)用進(jìn)行通信,可自由組合,按需分布部署,并且可根據(jù)需求增值開發(fā)新模塊,通過在邏輯層的不同模塊間實(shí)現(xiàn)互操作增強(qiáng)平臺的可擴(kuò)展性,在實(shí)施例中,最小化安裝的云操作系統(tǒng)僅由云門戶、云管理門戶和云資源管理模塊組成,在此基礎(chǔ)上,監(jiān)控、計(jì)費(fèi)、審批或其他模塊按需定制和擴(kuò)展,通過基于Rest消息的調(diào)用進(jìn)行通信,按需分布部署和增值開發(fā),通過在邏輯層的不同模塊間實(shí)現(xiàn)互操作增強(qiáng)系統(tǒng)的可擴(kuò)展性;引入基于消息的通信方式支持異步調(diào)用,使用消息通信接口 JMS傳輸Rest消息,使系統(tǒng)架構(gòu)進(jìn)一步解耦,在此基礎(chǔ)上,采用面向構(gòu)建設(shè)計(jì),構(gòu)件管理門戶負(fù)責(zé)管理構(gòu)件的元數(shù)據(jù)并對其運(yùn)行狀態(tài)進(jìn)行監(jiān)控;
對象架構(gòu)雖然能夠?qū)崿F(xiàn)按需擴(kuò)展和分布部署,但屬于RPC(Remote Process Call)同步通信方式,發(fā)送端等待接收端返回后才能繼續(xù)執(zhí)行,雙方進(jìn)程緊耦合,隨著系統(tǒng)的擴(kuò)大化和復(fù)雜化,構(gòu)件之間的關(guān)聯(lián)關(guān)系過于復(fù)雜,針對此問題,在對象架構(gòu)的基礎(chǔ)上引入基于消息的通信方式,使用消息通信接口 JMS傳輸Rest信息,使得發(fā)送和接收端生命周期可以不同,并支持異步調(diào)用,使系統(tǒng)架構(gòu)進(jìn)一步解耦,在實(shí)施例中,門戶和云資源層之間的虛擬機(jī)開啟、關(guān)閉、掛起、關(guān)閉等操作通過異步方式實(shí)現(xiàn),門戶發(fā)出命令后無需等待響應(yīng)即可返回,提升了用戶交互效果;
基于上述混合型架構(gòu)的云操作系統(tǒng)能夠滿足開放兼容和擴(kuò)展需求,在此基礎(chǔ)上,基于面向構(gòu)建設(shè)計(jì)思想,構(gòu)件管理.門戶負(fù)責(zé)管理構(gòu)件的元數(shù)據(jù)信息,支持注冊、刪除、修改和查詢等操作,其中,
構(gòu)件是一個(gè)三元組包括:名稱、服務(wù)集合、訪問地址、描述;
服務(wù)是一個(gè)四元組,包括:名稱、類型、消息協(xié)議、參數(shù)列表、key名稱、功能描述、非功能描述;
除對構(gòu)件進(jìn)行描述和管理,構(gòu)件管理模塊進(jìn)一步對其處理環(huán)境進(jìn)行監(jiān)控,為保障構(gòu)件的可伸縮性和可用性提供基礎(chǔ)服務(wù),完善云操作系統(tǒng)的自管理能力,在構(gòu)件注冊時(shí),系統(tǒng)為其分配用戶名user、密碼psw以及唯一的構(gòu)件id,之后構(gòu)件處理集群的接入過程為
1)處理集群向地址為url的系統(tǒng)總線發(fā)起接入請求,系統(tǒng)總線驗(yàn)證接入節(jié)點(diǎn)的用戶名、密碼和id,如驗(yàn)證通過,建立連接,代碼為:
connection=ConnectionFactory.createConnection(user, psw, url);
2)建立一個(gè)寫操作主題,構(gòu)件的每個(gè)處理節(jié)點(diǎn)向該主題訂閱寫操作;
write_topic=session.createTopic(id+〃WRITE_T0PIC〃);
write_topic_consumer=session.createConsumer(write_topic);
3)構(gòu)件在writeTopicListener的onMessage方法中實(shí)現(xiàn)寫處理,并向系統(tǒng)總線注冊;write_topic_consumer.setMessageListener(writeTopicListener);
4)根據(jù)構(gòu)件處理節(jié)點(diǎn)數(shù)mum建立讀操作隊(duì)列組,每個(gè)處理節(jié)點(diǎn)對應(yīng)一個(gè)隊(duì)列訂閱讀操
作
read_queue=session.createMultiQueue(num, id+-READ_QUEUE-);
read_queue_consumer=session.createConsumer(read_queue);
5)在readQueueListener的onMessage方法中實(shí)現(xiàn)具體的讀處理功能,并向系統(tǒng)總線
注冊
read_queue_consumer.setMessageListener(readQueueListener);
在上述讀寫分離隊(duì)列組基礎(chǔ)上,在構(gòu)件管理模塊中對各構(gòu)件的服務(wù)類型進(jìn)行區(qū)分,設(shè)定其為冪等或非冪,冪等操作屬于無狀態(tài)操作,在同一狀態(tài)下每次執(zhí)行的結(jié)果相同;非冪等操作屬于有狀態(tài)操作,同一狀態(tài)下每次執(zhí)行的結(jié)果不同,路由器根據(jù)服務(wù)類型進(jìn)行路由,非冪操作發(fā)送到唯一的寫隊(duì)列,冪操作根據(jù)負(fù)載均衡策略發(fā)送到不同的讀隊(duì)列;
讀操作負(fù)載均衡流程過程為
1)計(jì)算節(jié)點(diǎn)的處理能力;
若節(jié)點(diǎn)i的CPU頻率、內(nèi)存容量和I/O帶寬分別為Ci, Mi和Bi,集群的各種資源為節(jié)點(diǎn)各種資源之和,即C= Σ Ci, M= Σ Mi, B= Σ Bi ;
則節(jié)點(diǎn)i的CPU權(quán)值為WiepU=CiZU內(nèi)存容量W嚴(yán)M=MiZU I/O帶寬Wi-=BiZB ;
若構(gòu)件服務(wù)所需資源比例分別為Pm1, Peam, P?,則節(jié)點(diǎn)i的處理能力為
ff_pCPUffiCPU+pEAMffiEAM+pIOffiIO ;
2)根據(jù)讀寫操作權(quán)值計(jì)算各節(jié)點(diǎn)的負(fù)載;
若讀隊(duì)列L同寫隊(duì)列Lw的讀寫操作開銷比a,則節(jié)點(diǎn)i的負(fù)載LelA+aC 各節(jié)點(diǎn)的負(fù)載狀態(tài)Si=LiZiWi
3)選擇負(fù)載最輕的節(jié)點(diǎn)進(jìn)行路由;
寫操作采用流水方式進(jìn)行,以提高數(shù)據(jù)寫入效率,其過程為節(jié)點(diǎn)I首先寫入數(shù)據(jù),寫入一個(gè)數(shù)據(jù)分片64 KB后,在繼續(xù)接收數(shù)據(jù)的同時(shí)向節(jié)點(diǎn)2轉(zhuǎn)發(fā)已寫入的64K數(shù)據(jù),節(jié)點(diǎn)2至節(jié)點(diǎn)η以相同方式接收和轉(zhuǎn)發(fā)數(shù)據(jù),直到節(jié)點(diǎn)η寫入最后一個(gè)不超過64 KB數(shù)據(jù)分片;
在上述通信方法基礎(chǔ)上,節(jié)點(diǎn)監(jiān)控模塊進(jìn)一步將構(gòu)件處理節(jié)點(diǎn)的加入、退出、失效和恢復(fù)事件發(fā)送給構(gòu)件管理模塊,其中,節(jié)點(diǎn)加入事件是指為構(gòu)件添加一個(gè)處理節(jié)點(diǎn);節(jié)點(diǎn)退出事件是指為構(gòu)件撤銷一個(gè)處理節(jié)點(diǎn);節(jié)點(diǎn)失效事件是指構(gòu)件的一個(gè)處理節(jié)點(diǎn)不可用;節(jié)點(diǎn)蘇醒事件是指構(gòu)件一個(gè)不可用處理節(jié)點(diǎn)恢復(fù)可用。
[0008]2、一種面向構(gòu)件的混合型云操作系統(tǒng)的通信方法,其特征在于,包括高可用構(gòu)件集群通信方法和水平伸縮構(gòu)件集群通信方法,其中:
高可用構(gòu)件集群通信方法,是構(gòu)件管理模塊為每個(gè)構(gòu)件集群建立一個(gè)讀寫分離隊(duì)列組,構(gòu)件管理模塊進(jìn)一步將構(gòu)件的服務(wù)類型區(qū)分為冪等或非冪,路由器根據(jù)服務(wù)類型進(jìn)行路由,非冪操作發(fā)送到唯一的寫隊(duì)列,冪操作根據(jù)負(fù)載均衡策略發(fā)送到不同的讀隊(duì)列,在此基礎(chǔ)上,節(jié)點(diǎn)監(jiān)控模塊將處理節(jié)點(diǎn)的加入、退出、失效和恢復(fù)事件發(fā)送給構(gòu)件管理模塊,構(gòu)件管理模塊進(jìn)一步根據(jù)節(jié)點(diǎn)變化事件調(diào)整隊(duì)列結(jié)構(gòu),此方法通過讀寫分離和負(fù)載均衡提高有狀態(tài)構(gòu)件集群的通信性能,根據(jù)節(jié)點(diǎn)變化調(diào)整隊(duì)列結(jié)構(gòu)保障構(gòu)件的高可用性,構(gòu)件管理模塊進(jìn)一步根據(jù)監(jiān)控模塊發(fā)送的節(jié)點(diǎn)變化事件調(diào)整隊(duì)列結(jié)構(gòu),流程如下: 1)當(dāng)節(jié)點(diǎn)加入時(shí),在隊(duì)列組中為該節(jié)點(diǎn)建立一個(gè)讀操作隊(duì)列,該節(jié)點(diǎn)向該隊(duì)列訂閱讀操作,并向?qū)懼黝}訂閱寫主題;
2)當(dāng)節(jié)點(diǎn)退出時(shí),刪除該節(jié)點(diǎn)對應(yīng)的讀隊(duì)列,關(guān)閉其對寫主題的訂閱;
3)當(dāng)節(jié)點(diǎn)失效時(shí),停止向該節(jié)點(diǎn)的讀隊(duì)列發(fā)送讀請求,在寫主題中為該節(jié)點(diǎn)保留寫操
作;
4)當(dāng)節(jié)點(diǎn)蘇醒時(shí),在寫主題中同步寫操作,恢復(fù)向該節(jié)點(diǎn)對應(yīng)的讀隊(duì)列發(fā)送讀操作請
求;
無狀態(tài)集群的負(fù)載均衡方法將操作完全均衡的分配到各個(gè)節(jié)點(diǎn)上,在有狀態(tài)情況下將造成處理結(jié)果不一致,上述方法通過建立讀寫分離隊(duì)列并針對節(jié)點(diǎn)能力負(fù)載均衡,能夠避免此問題,提高有狀態(tài)構(gòu)件集群的通信性能,并且根據(jù)節(jié)點(diǎn)變化事件調(diào)整隊(duì)列結(jié)構(gòu)保障了有狀態(tài)集群的高可用性;
水平伸縮構(gòu)件集群通信方法,是構(gòu)件管理模塊根據(jù)節(jié)點(diǎn)數(shù)為構(gòu)件的每個(gè)服務(wù)建立多邊形隊(duì)列結(jié)構(gòu),按Hash值進(jìn)行二分查找路由,算法效率由遠(yuǎn)小于關(guān)鍵字規(guī)模的Hash分組數(shù)目決定,提高了路由效率,并且在節(jié)點(diǎn)數(shù)發(fā)生變化的情況下只需調(diào)整部分節(jié)點(diǎn)數(shù)據(jù)狀態(tài),提高了動態(tài)伸縮效率,在上述通信方法基礎(chǔ)上,在初始化階段根據(jù)節(jié)點(diǎn)處理能力劃分各節(jié)點(diǎn)所需處理的Hash區(qū)間,形成路由表,實(shí)現(xiàn)按比例分布數(shù)據(jù)狀態(tài),達(dá)到負(fù)載均衡;
構(gòu)件管理模塊根據(jù)節(jié)點(diǎn)數(shù)為構(gòu)件的每個(gè)服務(wù)建立多邊形隊(duì)列組,每個(gè)隊(duì)列對應(yīng)一個(gè)Hash值區(qū)間或分組,按Hash值進(jìn)行二分查找路由,路由算法如下:
1)計(jì)算key的Hash值h;
2)初始化分組下限i為1,分組上限j為分組總數(shù)m;
3)重復(fù);
4)計(jì)算中間分組t=(i+j)/2,查看分組t是否包含h;
5)若h小于當(dāng)前分組下限,更新上限j=t-l;
6)若h大于當(dāng)前分組上限,更新下限i=t+l;
7)否則,返回區(qū)間所在節(jié)點(diǎn)進(jìn)行路由;
上述算法相當(dāng)于以分組為節(jié)點(diǎn)做二分查找,復(fù)雜度為O(l0g2n),算法的效率由分組數(shù)目決定,由于分組數(shù)目遠(yuǎn)小于關(guān)鍵字規(guī)模,因此提高了路由效率,另外,由于采用了分組策略,因此在節(jié)點(diǎn)數(shù)量發(fā)生變化的情況下只需調(diào)整部分分組的關(guān)鍵字規(guī)模和對應(yīng)節(jié)點(diǎn)的數(shù)據(jù)狀態(tài),提高了動態(tài)伸縮效率。
[0009]本發(fā)明的有益效果是:與現(xiàn)有技術(shù)相比,本發(fā)明提出的面向構(gòu)件的混合型架構(gòu)完善了開放兼容、可擴(kuò)展、松耦合的構(gòu)件化云操作系統(tǒng)體系結(jié)構(gòu),并通過構(gòu)件水平伸縮集群和高可用集群的通信方法保障了云操作系統(tǒng)的可伸縮性和高可用性。
【專利附圖】
【附圖說明】
[0010]圖1是面向構(gòu)件的混合型COS體系結(jié)構(gòu)圖;
圖2是支持有狀態(tài)構(gòu)件集群高可用的通信架構(gòu)圖;
圖3是讀寫分離隊(duì)列組示意圖;
圖4是數(shù)據(jù)寫入時(shí)序圖;
圖5是節(jié)點(diǎn)狀態(tài)轉(zhuǎn)換圖; 圖6是隊(duì)列結(jié)構(gòu)調(diào)整流程圖;
圖7是水平伸縮構(gòu)件集群通信架構(gòu)圖;
圖8是多邊隊(duì)列組路由不意圖;
圖9是多邊隊(duì)列組路由算法流程圖。
【具體實(shí)施方式】
[0011]以下將結(jié)合附圖及實(shí)施例來詳細(xì)說明本發(fā)明的實(shí)施方式,借此對本發(fā)明如何應(yīng)用技術(shù)手段來解決技術(shù)問題,并達(dá)成技術(shù)效果的實(shí)現(xiàn)過程能充分理解并據(jù)以實(shí)施。需要說明的是,如果不沖突,本發(fā)明實(shí)施例以及實(shí)施例中的各個(gè)特征的相互均在本發(fā)明的保護(hù)范圍之內(nèi)。
[0012]I面向構(gòu)件的混合型云操作系統(tǒng)架構(gòu)
從層次模型角度,云操作系統(tǒng)從上至下分為門戶層、邏輯層、適配層和實(shí)現(xiàn)層四個(gè)層次,如圖1所示。各層相對獨(dú)立,通過在各層分別定義標(biāo)準(zhǔn)接口增強(qiáng)系統(tǒng)的開放性,通過在各層適配不同功能實(shí)現(xiàn)增強(qiáng)兼容性。在實(shí)施例中,通過剝離門戶層可實(shí)現(xiàn)用戶UI和功能邏輯的分離,例如,邏輯層可通過對外提供統(tǒng)一標(biāo)準(zhǔn)的Rest API支持門戶或第三方的二次開發(fā);通過抽象出邏輯功能層可以實(shí)現(xiàn)對多種具體功能實(shí)現(xiàn)的兼容,例如,云資源管理模塊通過虛擬化適配器支持多種虛擬化基礎(chǔ)設(shè)施,監(jiān)控管理模塊通過適配框架兼容多種監(jiān)控協(xié)議,流程管理模塊通過流程引擎支持不同審批流程的定制,計(jì)費(fèi)管理和認(rèn)證授權(quán)模塊通過預(yù)留鉤子接口支持插件接入。
[0013]從對象模型角度,云操作系統(tǒng)由云門戶、云管理門戶、云資源管理、監(jiān)控管理、計(jì)量計(jì)費(fèi)、業(yè)務(wù)審批、授權(quán)認(rèn)證等功能模塊組成,各功能組件通過基于Rest消息的調(diào)用進(jìn)行通信,可自由組合,按需分布部署,并且可根據(jù)需求增值開發(fā)新模塊,通過在邏輯層的不同模塊間實(shí)現(xiàn)互操作增強(qiáng)平臺的可擴(kuò)展性。在實(shí)施例中,最小化安裝的云操作系統(tǒng)僅由云門戶、云管理門戶和云資源管理模塊組成,在此基礎(chǔ)上,監(jiān)控、計(jì)費(fèi)、審批或其他模塊可以按需定制和擴(kuò)展。
[0014]對象架構(gòu)雖然可以實(shí)現(xiàn)按需擴(kuò)展和分布部署,但屬于RPCXRemote Process Call)同步通信方式,發(fā)送端等待接收端返回后才能繼續(xù)執(zhí)行,雙方進(jìn)程緊耦合,隨著系統(tǒng)的擴(kuò)大化和復(fù)雜化,構(gòu)件之間的關(guān)聯(lián)關(guān)系過于復(fù)雜。針對此問題,在對象架構(gòu)的基礎(chǔ)上引入基于消息的通信方式,使用消息通信接口 JMS傳輸Rest信息,使得發(fā)送和接收端生命周期可以不同,并支持異步調(diào)用,使系統(tǒng)架構(gòu)進(jìn)一步解耦。在實(shí)施例中,門戶和云資源層之間的虛擬機(jī)開啟、關(guān)閉、掛起、關(guān)閉等操作通過異步方式實(shí)現(xiàn),門戶發(fā)出命令后無需等待響應(yīng)即可返回,提升了用戶交互效果。
[0015]基于上述混合型架構(gòu)的云操作系統(tǒng)能夠滿足開放兼容和擴(kuò)展需求。在此基礎(chǔ)上,基于面向構(gòu)建設(shè)計(jì)思想,構(gòu)件管理門戶負(fù)責(zé)管理構(gòu)件的元數(shù)據(jù)信息,支持注冊、刪除、修改和查詢等操作,其中,
構(gòu)件是一個(gè)三元組{名稱、服務(wù)集合、訪問地址、描述}
服務(wù)是一個(gè)四元組{名稱、類型、消息協(xié)議、參數(shù)列表、key名稱、功能描述、非功能描
述}
除對構(gòu)件進(jìn)行描述和管理,構(gòu)件管理模塊進(jìn)一步對其處理環(huán)境進(jìn)行監(jiān)控,為保障構(gòu)件的可伸縮性和可用性提供基礎(chǔ)服務(wù),完善云操作系統(tǒng)的自管理能力。
[0016]2高可用構(gòu)件集群通信方法
本發(fā)明提出高可用構(gòu)件集群的實(shí)施例如圖2所示,主要包括如下模塊 構(gòu)件管理模塊負(fù)責(zé)根據(jù)構(gòu)件信息建立、刪除和調(diào)整構(gòu)件的消息隊(duì)列組;
消息路由器負(fù)責(zé)根據(jù)路由信息向所述隊(duì)列組分發(fā)消息。
[0017]節(jié)點(diǎn)監(jiān)控模塊負(fù)責(zé)檢測構(gòu)件處理集群各節(jié)點(diǎn)的加入和退出,獲取處理節(jié)點(diǎn)的資源配置信息。
[0018]構(gòu)件處理集群負(fù)責(zé)實(shí)現(xiàn)構(gòu)件的具體服務(wù)功能,由若干個(gè)處理節(jié)點(diǎn)組成。
[0019]構(gòu)件客戶端負(fù)責(zé)發(fā)起對構(gòu)件服務(wù)的使用請求。
[0020]基于上述架構(gòu),在構(gòu)件注冊時(shí),系統(tǒng)為其分配用戶名user、密碼psw以及唯一的構(gòu)件id,之后構(gòu)件處理集群的接入過程為
` 1.處理集群向地址為url的系統(tǒng)總線發(fā)起接入請求,系統(tǒng)總線驗(yàn)證接入節(jié)點(diǎn)的用戶名、密碼和id,如驗(yàn)證通過,建立連接。代碼為:
connection=ConnectionFactory.createConnection(user, psw, url);
`2.建立一個(gè)寫操作主題,構(gòu)件的每個(gè)處理節(jié)點(diǎn)向該主題訂閱寫操作; write_topic=session.createTopic(id+〃WRITE_T0PIC〃); write_topic_consumer=session.createConsumer(write_topic);
` 3.構(gòu)件在writeTopicListener的onMessage方法中實(shí)現(xiàn)寫處理,并向系統(tǒng)總線注
ΠΠ
冊;
write_topic_consumer.setMessageListener(writeTopicListener);
`4.根據(jù)構(gòu)件處理節(jié)點(diǎn)數(shù)mum建立讀操作隊(duì)列組,每個(gè)處理節(jié)點(diǎn)對應(yīng)一個(gè)隊(duì)列訂閱讀
操作`
read_queue=session.createMultiQueue(num, id+READ_QUEUE);
read_queue_consumer=session.createConsumer(read_queue);
`5.在readQueueListener的onMessage方法中實(shí)現(xiàn)具體的讀處理功能,并向系統(tǒng)總
線注冊
read_queue_consumer.setMessageListener(readQueueListener);
在上述讀寫分離隊(duì)列組基礎(chǔ)上,在構(gòu)件管理模塊中對各構(gòu)件的服務(wù)類型進(jìn)行區(qū)分,設(shè)定其為冪等或非冪等。冪等操作屬于無狀態(tài)操作,在同一狀態(tài)下每次執(zhí)行的結(jié)果相同;非冪等操作屬于有狀態(tài)操作,同一狀態(tài)下每次執(zhí)行的結(jié)果不同。路由器根據(jù)服務(wù)類型進(jìn)行路由,非冪等操作發(fā)送到唯一的寫隊(duì)列,冪等操作根據(jù)負(fù)載均衡策略發(fā)送到不同的讀隊(duì)列,如圖3所示。其中,
讀操作負(fù)載均衡流程過程為
`1.計(jì)算節(jié)點(diǎn)的處理能力;
若節(jié)點(diǎn)i的CPU頻率、內(nèi)存容量和1/0帶寬分別為Ci, Mi和Bi,集群的各種資源為節(jié)點(diǎn)各種資源之和,即C= Σ Ci, M= Σ Mi, B= Σ Bi ;
則節(jié)點(diǎn)i的CPU權(quán)值為WiepU=CiZU內(nèi)存容量W嚴(yán)M=MiZU 1/0帶寬Wi=BiZB ;
若構(gòu)件服務(wù)所需資源比例分別為Pm1, Peam, P?,則節(jié)點(diǎn)i的處理能力為
ff_pCPUffiCPU+pEAMffiEAM+p10ffi10 ; 2.根據(jù)讀寫操作權(quán)值計(jì)算各節(jié)點(diǎn)的負(fù)載;
若讀隊(duì)列L同寫隊(duì)列Lw的讀寫操作開銷比a,則節(jié)點(diǎn)i的負(fù)載LelA+aC 各節(jié)點(diǎn)的負(fù)載狀態(tài)Si=LiZiWi
3.選擇負(fù)載最輕的節(jié)點(diǎn)進(jìn)行路由;
寫操作采用流水方式進(jìn)行,以提高數(shù)據(jù)寫入效率,如圖4所示,其過程為節(jié)點(diǎn)I首先寫入數(shù)據(jù),寫入一個(gè)數(shù)據(jù)分片(64 KB)后,在繼續(xù)接收數(shù)據(jù)的同時(shí)向節(jié)點(diǎn)2轉(zhuǎn)發(fā)已寫入的64K數(shù)據(jù),節(jié)點(diǎn)2至節(jié)點(diǎn)η以相同方式接收和轉(zhuǎn)發(fā)數(shù)據(jù),直到節(jié)點(diǎn)η寫入最后一個(gè)數(shù)據(jù)分片(不超過64 ΚΒ)。
[0021]在上述通信方法基礎(chǔ)上,節(jié)點(diǎn)監(jiān)控模塊進(jìn)一步將構(gòu)件處理節(jié)點(diǎn)的加入、退出、失效和恢復(fù)事件發(fā)送給構(gòu)件管理模塊,節(jié)點(diǎn)狀態(tài)轉(zhuǎn)換關(guān)系如圖5所示。其中,節(jié)點(diǎn)加入事件是指為構(gòu)件添加一個(gè)處理節(jié)點(diǎn);節(jié)點(diǎn)退出事件是指為構(gòu)件撤銷一個(gè)處理節(jié)點(diǎn);節(jié)點(diǎn)失效事件是指構(gòu)件的一個(gè)處理節(jié)點(diǎn)不可用;節(jié)點(diǎn)蘇醒事件是指構(gòu)件一個(gè)不可用處理節(jié)點(diǎn)恢復(fù)可用。
[0022]構(gòu)件管理模塊進(jìn)一步根據(jù)監(jiān)控模塊發(fā)送的節(jié)點(diǎn)變化事件調(diào)整隊(duì)列結(jié)構(gòu),流程如圖6所示:
1.當(dāng)節(jié)點(diǎn)加入時(shí),在隊(duì)列組中為該節(jié)點(diǎn)建立一個(gè)讀操作隊(duì)列,該節(jié)點(diǎn)向該隊(duì)列訂閱讀操作,并向?qū)懼黝}訂閱寫主題;
2.當(dāng)節(jié)點(diǎn)退出時(shí),刪除該節(jié)點(diǎn)對應(yīng)的讀隊(duì)列,關(guān)閉其對寫主題的訂閱;
3.當(dāng)節(jié)點(diǎn)失效時(shí),停止向該節(jié)點(diǎn)的讀隊(duì)列發(fā)送讀請求,在寫主題中為該節(jié)點(diǎn)保留寫操作;
4.當(dāng)節(jié)點(diǎn)蘇醒時(shí),在寫主題中同步寫操作,恢復(fù)向該節(jié)點(diǎn)對應(yīng)的讀隊(duì)列發(fā)送讀操作請求。
[0023]無狀態(tài)集群的負(fù)載均衡方法將操作完全均衡的分配到各個(gè)節(jié)點(diǎn)上,在有狀態(tài)情況下將造成處理結(jié)果不一致。上述方法通過建立讀寫分離隊(duì)列并針對節(jié)點(diǎn)能力負(fù)載均衡,能夠避免此問題,提高有狀態(tài)構(gòu)件集群的通信性能,并且根據(jù)節(jié)點(diǎn)變化事件調(diào)整隊(duì)列結(jié)構(gòu)保障了有狀態(tài)集群的高可用性。
[0024]3水平伸縮構(gòu)件集群通信方法
本發(fā)明實(shí)施例提供了一種水平伸縮構(gòu)件集群通信方法,如圖7所示。構(gòu)件管理模塊根據(jù)節(jié)點(diǎn)數(shù)為構(gòu)件的每個(gè)服務(wù)建立多邊形隊(duì)列組,每個(gè)隊(duì)列對應(yīng)一個(gè)Hash值區(qū)間(分組),按Hash值進(jìn)行二分查找路由,路由算法為如圖9所示
1.計(jì)算key的Hash值h;
2.初始化分組下限i為1,分組上限j為分組總數(shù)m;
3.重復(fù);
4.計(jì)算中間分組t=(i+j)/2,查看分組t是否包含h;
5.若h小于當(dāng)前分組下限,更新上限j=t_l;
6.若h大于當(dāng)前分組上限,更新下限i=t+l;
7.否則,返回區(qū)間所在節(jié)點(diǎn)進(jìn)行路由。
[0025]上述算法相當(dāng)于以分組為節(jié)點(diǎn)做二分查找,復(fù)雜度為O(1g2Ii),算法的效率由分組數(shù)目決定,由于分組數(shù)目遠(yuǎn)小于關(guān)鍵字規(guī)模,因此提高了路由效率。另外,由于采用了分組策略,因此在節(jié)點(diǎn)數(shù)量發(fā)生變化的情況下只需調(diào)整部分分組的關(guān)鍵字規(guī)模和對應(yīng)節(jié)點(diǎn)的數(shù)據(jù)狀態(tài),提高了動態(tài)伸縮效率。
[0026]在上述通信方法基礎(chǔ)上,本發(fā)明實(shí)例提出一種數(shù)據(jù)狀態(tài)分布方法,在初始化階段根據(jù)節(jié)點(diǎn)處理能力劃分各節(jié)點(diǎn)所需處理的Hash區(qū)間,節(jié)點(diǎn)處理能力的計(jì)算方法如前所述。此方法能夠根據(jù)節(jié)點(diǎn)處理能力劃分各節(jié)點(diǎn)的隊(duì)列所需處理的Hash區(qū)間規(guī)模,實(shí)現(xiàn)按比例分布數(shù)據(jù)狀態(tài),達(dá)到負(fù)載均衡。
[0027]本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。
【權(quán)利要求】
1.一種面向構(gòu)件的混合型云操作系統(tǒng),其特征在于基于層次、對象和消息模型建立混合型架構(gòu),并采用面向構(gòu)件思想對組成構(gòu)件及其處理環(huán)境進(jìn)行管理,在此基礎(chǔ)上,對構(gòu)件處理集群進(jìn)行高效路由、讀寫分離和負(fù)載均衡,滿足對云操作系統(tǒng)地的開放兼容、松耦合和可擴(kuò)展需求,解決現(xiàn)有云操作系統(tǒng)的自管理問題、構(gòu)件水平伸縮問題和有狀態(tài)構(gòu)件的高可用問題, 從層次模型角度,系統(tǒng)自上至下分為門戶層、邏輯層、適配層和實(shí)現(xiàn)層,各層相對獨(dú)立,通過在各層分別定義標(biāo)準(zhǔn)接口增強(qiáng)開放性,通過在各層適配不同功能實(shí)現(xiàn)增強(qiáng)兼容性; 從對象模型角度,云操作系統(tǒng)由云門戶、云管理門戶、云資源管理、監(jiān)控管理、計(jì)量計(jì)費(fèi)、業(yè)務(wù)審批、授權(quán)認(rèn)證功能模塊組成,各功能組件通過基于Rest消息的調(diào)用進(jìn)行通信,可自由組合,按需分布部署,并且可根據(jù)需求增值開發(fā)新模塊,通過在邏輯層的不同模塊間實(shí)現(xiàn)互操作增強(qiáng)平臺的可擴(kuò)展性,在實(shí)施例中,最小化安裝的云操作系統(tǒng)僅由云門戶、云管理門戶和云資源管理模塊組成,在此基礎(chǔ)上,監(jiān)控、計(jì)費(fèi)、審批或其他模塊按需定制和擴(kuò)展,通過基于Rest消息的調(diào)用進(jìn)行通信,按需分布部署和增值開發(fā),通過在邏輯層的不同模塊間實(shí)現(xiàn)互操作增強(qiáng)系統(tǒng)的可擴(kuò)展性;引入基于消息的通信方式支持異步調(diào)用,使用消息通信接口 JMS傳輸Rest消息,使系統(tǒng)架構(gòu)進(jìn)一步解耦,在此基礎(chǔ)上,采用面向構(gòu)建設(shè)計(jì),構(gòu)件管理門戶負(fù)責(zé)管理構(gòu)件的元數(shù)據(jù)并對其運(yùn)行狀態(tài)進(jìn)行監(jiān)控; 對象架構(gòu)雖然能夠?qū)崿F(xiàn)按需擴(kuò)展和分布部署,但屬于RPC(Remote Process Call)同步通信方式,發(fā)送端等待接收端返回后才能繼續(xù)執(zhí)行,雙方進(jìn)程緊耦合,隨著系統(tǒng)的擴(kuò)大化和復(fù)雜化,構(gòu)件之間的關(guān)聯(lián)關(guān)系過于復(fù)雜,針對此問題,在對象架構(gòu)的基礎(chǔ)上引入基于消息的通信方式,使用消息通信接口 JMS傳輸Rest信息,使得發(fā)送和接收端生命周期可以不同,并支持異步調(diào)用,使系統(tǒng)架構(gòu)進(jìn)一步解耦,在實(shí)施例中,門戶和云資源層之間的虛擬機(jī)開啟、關(guān)閉、掛起、關(guān)閉等操作通過異步方式實(shí)現(xiàn),門戶發(fā)出命令后無需等待響應(yīng)即可返回,提升了用戶交互效果; 基于上述混合型架構(gòu)的云操作系統(tǒng)能夠滿足開放兼容和擴(kuò)展需求,在此基礎(chǔ)上,基于面向構(gòu)建設(shè)計(jì)思想,構(gòu)件管理門戶負(fù)責(zé)管理構(gòu)件的元數(shù)據(jù)信息,支持注冊、刪除、修改和查詢等操作,其中,` 構(gòu)件是一個(gè)三元組包括:名稱、服務(wù)集合、訪問地址、描述; 服務(wù)是一個(gè)四元組,包括:名稱、類型、消息協(xié)議、參數(shù)列表、key名稱、功能描述、非功能描述; 除對構(gòu)件進(jìn)行描述和管理,構(gòu)件管理模塊進(jìn)一步對其處理環(huán)境進(jìn)行監(jiān)控,為保障構(gòu)件的可伸縮性和可用性提供基礎(chǔ)服務(wù),完善云操作系統(tǒng)的自管理能力,在構(gòu)件注冊時(shí),系統(tǒng)為其分配用戶名user、密碼psw以及唯一的構(gòu)件id,之后構(gòu)件處理集群的接入過程為: 1)處理集群向地址為url的系統(tǒng)總線發(fā)起接入請求,系統(tǒng)總線驗(yàn)證接入節(jié)點(diǎn)的用戶名、密碼和id,如驗(yàn)證通過,建立連接,代碼為:
connection=ConnectionFactory.createConnection(user, psw, url); 2)建立一個(gè)寫操作主題,構(gòu)件的每個(gè)處理節(jié)點(diǎn)向該主題訂閱寫操作;
write_topic=session.createTopic(id+〃WRITE_TOPIC〃);
write_topic_consumer=session.createConsumer(write_topic); 3)構(gòu)件在writeTopicListener的onMessage方法中實(shí)現(xiàn)寫處理,并向系統(tǒng)總線注冊;write_topic_consumer.setMessageListener(writeTopicListener); 4)根據(jù)構(gòu)件處理節(jié)點(diǎn)數(shù)mum建立讀操作隊(duì)列組,每個(gè)處理節(jié)點(diǎn)對應(yīng)一個(gè)隊(duì)列訂閱讀操作
read_queue=session.createMultiQueue(num, id+READ_QUEUE);
read_queue_consumer=session.createConsumer(read_queue); 5)在readQueueListener的onMessage方法中實(shí)現(xiàn)具體的讀處理功能,并向系統(tǒng)總線注冊
read_queue_consumer.setMessageListener(readQueueListener); 在上述讀寫分離隊(duì)列組基礎(chǔ)上,在構(gòu)件管理模塊中對各構(gòu)件的服務(wù)類型進(jìn)行區(qū)分,設(shè)定其為冪等或非冪,冪等操作屬于無狀態(tài)操作,在同一狀態(tài)下每次執(zhí)行的結(jié)果相同;非冪等操作屬于有狀態(tài)操作,同一狀態(tài)下每次執(zhí)行的結(jié)果不同,路由器根據(jù)服務(wù)類型進(jìn)行路由,非冪操作發(fā)送到唯一的寫隊(duì)列,冪操作根據(jù)負(fù)載均衡策略發(fā)送到不同的讀隊(duì)列; 讀操作負(fù)載均衡流程過程為: 1)計(jì)算節(jié)點(diǎn)的處理能力; 若節(jié)點(diǎn)i的CPU頻率、內(nèi)存容量和I/O帶寬分別為Ci, Mi和Bi,集群的各種資源為節(jié)點(diǎn)各種資源之和,即C= Σ Ci, M= Σ Mi, B= Σ Bi ; 則節(jié)點(diǎn)i的CPU權(quán)值為WiepU=CiZU內(nèi)存容量W嚴(yán)M=MiZU I/O帶寬Wi=BiZB ; 若構(gòu)件服務(wù)所需資源比例分別為Pm1, Peam, P?,則節(jié)點(diǎn)i的處理能力為ff_pCPUffiCPU+pEAMffiEAM+pIOffiIO ; 2)根據(jù)讀寫操作權(quán)值計(jì)算各節(jié)點(diǎn)的負(fù)載; 若讀隊(duì)列L同寫隊(duì)列Lw的讀寫操作開銷比a,則節(jié)點(diǎn)i的負(fù)載LelA+aC 各節(jié)點(diǎn)的負(fù)載狀態(tài)Si=LiZiWi 3)選擇負(fù)載最輕的節(jié)點(diǎn)進(jìn)行路由; 寫操作采用流水方式進(jìn)行,以提高數(shù)據(jù)寫入效率,其過程為節(jié)點(diǎn)I首先寫入數(shù)據(jù),寫入一個(gè)數(shù)據(jù)分片64 KB后,在繼續(xù)接收數(shù)據(jù)的同時(shí)向節(jié)點(diǎn)2轉(zhuǎn)發(fā)已寫入的64K數(shù)據(jù),節(jié)點(diǎn)2至節(jié)點(diǎn)η以相同方式接收和轉(zhuǎn)發(fā)數(shù)據(jù),直到節(jié)點(diǎn)η寫入最后一個(gè)不超過64 KB數(shù)據(jù)分片; 在上述通信方法基礎(chǔ)上,節(jié)點(diǎn)監(jiān)控模塊進(jìn)一步將構(gòu)件處理節(jié)點(diǎn)的加入、退出、失效和恢復(fù)事件發(fā)送給構(gòu)件管理模塊,其中,節(jié)點(diǎn)加入事件是指為構(gòu)件添加一個(gè)處理節(jié)點(diǎn);節(jié)點(diǎn)退出事件是指為構(gòu)件撤銷一個(gè)處理節(jié)點(diǎn);節(jié)點(diǎn)失效事件是指構(gòu)件的一個(gè)處理節(jié)點(diǎn)不可用;節(jié)點(diǎn)蘇醒事件是指構(gòu)件一個(gè)不可用處理節(jié)點(diǎn)恢復(fù)可用。
2.一種面向構(gòu)件的混合型云操作系統(tǒng)的通信方法,其特征在于,包括高可用構(gòu)件集群通信方法和水平伸縮構(gòu)件集群通信方法,其中: 高可用構(gòu)件集群通信方法,是構(gòu)件管理模塊為每個(gè)構(gòu)件集群建立一個(gè)讀寫分離隊(duì)列組,構(gòu)件管理模塊進(jìn)一步將構(gòu)件的服務(wù)類型區(qū)分為冪等或非冪,路由器根據(jù)服務(wù)類型進(jìn)行路由,非冪操作發(fā)送到唯一的寫隊(duì)列,冪操作根據(jù)負(fù)載均衡策略發(fā)送到不同的讀隊(duì)列,在此基礎(chǔ)上,節(jié)點(diǎn)監(jiān)控模塊將處理節(jié)點(diǎn)的加入、退出、失效和恢復(fù)事件發(fā)送給構(gòu)件管理模塊,構(gòu)件管理模塊進(jìn)一步根據(jù)節(jié)點(diǎn)變化事件調(diào)整隊(duì)列結(jié)構(gòu),此方法通過讀寫分離和負(fù)載均衡提高有狀態(tài)構(gòu)件集群的通信性能,根據(jù)節(jié)點(diǎn)變化調(diào)整隊(duì)列結(jié)構(gòu)保障構(gòu)件的高可用性,構(gòu)件管理模塊進(jìn)一步根據(jù)監(jiān)控模塊發(fā)送的節(jié)點(diǎn)變化事件調(diào)整隊(duì)列結(jié)構(gòu),流程如下:1)當(dāng)節(jié)點(diǎn)加入時(shí),在隊(duì)列組中為該節(jié)點(diǎn)建立一個(gè)讀操作隊(duì)列,該節(jié)點(diǎn)向該隊(duì)列訂閱讀操作,并向?qū)懼黝}訂閱寫主題; 2)當(dāng)節(jié)點(diǎn)退出時(shí),刪除該節(jié)點(diǎn)對應(yīng)的讀隊(duì)列,關(guān)閉其對寫主題的訂閱; 3)當(dāng)節(jié)點(diǎn)失效時(shí),停止向該節(jié)點(diǎn)的讀隊(duì)列發(fā)送讀請求,在寫主題中為該節(jié)點(diǎn)保留寫操作; 4)當(dāng)節(jié)點(diǎn)蘇醒時(shí),在寫主題中同步寫操作,恢復(fù)向該節(jié)點(diǎn)對應(yīng)的讀隊(duì)列發(fā)送讀操作請求; 無狀態(tài)集群的負(fù)載均衡方法將操作完全均衡的分配到各個(gè)節(jié)點(diǎn)上,在有狀態(tài)情況下將造成處理結(jié)果不一致,上述方法通過建立讀寫分離隊(duì)列并針對節(jié)點(diǎn)能力負(fù)載均衡,能夠避免此問題,提高有狀態(tài)構(gòu)件集群的通信性能,并且根據(jù)節(jié)點(diǎn)變化事件調(diào)整隊(duì)列結(jié)構(gòu)保障了有狀態(tài)集群的高可用性; 水平伸縮構(gòu)件集群通信方法,是構(gòu)件管理模塊根據(jù)節(jié)點(diǎn)數(shù)為構(gòu)件的每個(gè)服務(wù)建立多邊形隊(duì)列結(jié)構(gòu),按Hash值進(jìn)行二分查找路由,算法效率由遠(yuǎn)小于關(guān)鍵字規(guī)模的Hash分組數(shù)目決定,提高了路由效率,并且在節(jié)點(diǎn)數(shù)發(fā)生變化的情況下只需調(diào)整部分節(jié)點(diǎn)數(shù)據(jù)狀態(tài),提高了動態(tài)伸縮效率,在上述通信方法基礎(chǔ)上,在初始化階段根據(jù)節(jié)點(diǎn)處理能力劃分各節(jié)點(diǎn)所需處理的Hash區(qū)間,形成路由表,實(shí)現(xiàn)按比例分布數(shù)據(jù)狀態(tài),達(dá)到負(fù)載均衡; 構(gòu)件管理模塊根據(jù)節(jié) 點(diǎn)數(shù)為構(gòu)件的每個(gè)服務(wù)建立多邊形隊(duì)列組,每個(gè)隊(duì)列對應(yīng)一個(gè)Hash值區(qū)間或分組,按Hash值進(jìn)行二分查找路由,路由算法如下: 1)計(jì)算key的Hash值h; 2)初始化分組下限i為1,分組上限j為分組總數(shù)m; 3)重復(fù); 4)計(jì)算中間分組t=(i+j)/2,查看分組t是否包含h; 5)若h小于當(dāng)前分組下限,更新上限j=t-l; 6)若h大于當(dāng)前分組上限,更新下限i=t+l; 7)否則,返回區(qū)間所在節(jié)點(diǎn)進(jìn)行路由; 上述算法相當(dāng)于以分組為節(jié)點(diǎn)做二分查找,復(fù)雜度為O(log2n),算法的效率由分組數(shù)目決定,由于分組數(shù)目遠(yuǎn)小于關(guān)鍵字規(guī)模,因此提高了路由效率,另外,由于采用了分組策略,因此在節(jié)點(diǎn)數(shù)量發(fā)生變化的情況下只需調(diào)整部分分組的關(guān)鍵字規(guī)模和對應(yīng)節(jié)點(diǎn)的數(shù)據(jù)狀態(tài),提高了動態(tài)伸縮效率。
【文檔編號】H04L29/08GK103442049SQ201310367864
【公開日】2013年12月11日 申請日期:2013年8月22日 優(yōu)先權(quán)日:2013年8月22日
【發(fā)明者】王恩東, 張東, 劉正偉, 亓開元, 劉俊朋, 郭峰, 劉成平, 高飛, 朱波 申請人:浪潮電子信息產(chǎn)業(yè)股份有限公司