亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于p2p技術的分布式負載均衡系統(tǒng)和方法

文檔序號:7862649閱讀:433來源:國知局
專利名稱:基于p2p技術的分布式負載均衡系統(tǒng)和方法
技術領域
本發(fā)明涉及一種基于點對點P2P (Peer-to-Peer)技術的分布式負載均衡系統(tǒng)和方法,屬于計算機網(wǎng)絡的技術領域。
背景技術
隨著網(wǎng)絡業(yè)務量、訪問量和數(shù)據(jù)流量的快速增長,服務器集群技術得到廣泛的應用和研究,而負載均衡技術作為服務器集群技術中的重要組成部分,也得到了廣泛、深入的研究和應用。目前,負載均衡技術在商業(yè)化的web服務的業(yè)務負載管理、網(wǎng)格計算中的計算任務負載管理、并行計算中的計算任務負載管理、云計算的計算資源負載管理等領域問題都 有大量的研究和實踐應用。按照仲裁方式,負載均衡技術主要分為集中式仲裁的負載均衡和分布式仲裁的負載均衡。由于集中式仲裁需要設置一個集中的負載均衡器,因此容易出現(xiàn)單點失效;并且隨著分布式集群處理節(jié)點的增多,其處理性能也會受到一定的限制,容易成為性能瓶頸。分布式仲裁的負載均衡已經(jīng)逐漸成為新的研究方向。P2P技術由于具有全分布、無中心節(jié)點等優(yōu)勢,進行負載決策時不會出現(xiàn)性能瓶頸和單故障點問題,而且,集群的伸縮性比較好,因此成為分布式負載均衡研究和應用的新方向。在P2P技術中,分布式哈希表DHT(DistributedHashTable)是一種廣泛應用的方法。其主要思想是通過哈希函數(shù)建立各個請求和分布式集群處理節(jié)點之間的映射關系,并在分布式集群處理節(jié)點處于動態(tài)增加和移出時,能夠最小化地改變每個請求和分布式集群處理節(jié)點之間映射關系?;赑2P技術的分布式負載均衡方法的現(xiàn)有技術存在兩個問題亟待解決節(jié)點動態(tài)變化的管理和節(jié)點請求的負載均衡?,F(xiàn)有技術中,基于DHT實現(xiàn)的負載均衡經(jīng)典算法方案有兩種Chord算法方案和Kademlia算法方案。這兩種方案都很好地解決了分布式集群環(huán)境下的節(jié)點動態(tài)變化管理和數(shù)據(jù)快速存取的處理過程,但是,它們都沒有很好地解決節(jié)點請求負載均衡的問題,系統(tǒng)中的節(jié)點可能出現(xiàn)負載過重或過輕的現(xiàn)象。其中,Chord算法在一致性哈希算法的基礎上,提高了查找指定請求所在節(jié)點的效率,但是,在節(jié)點數(shù)量不多時,很難保證每個節(jié)點在哈希環(huán)上的分布是否具有隨機性,這個問題又會造成哈希環(huán)上相鄰節(jié)點之間的間隔不夠均勻,從而帶來某些節(jié)點負載過重或者過輕的后
果OKademlia算法在一致性哈希算法的基礎上,根據(jù)請求的關鍵字和節(jié)點ID的相似度來選擇為其服務的節(jié)點。在查詢選擇時,通過異或運算來優(yōu)化查詢效率,即查找與請求關鍵字的異或運算結果最小的節(jié)點,用作為其服務的節(jié)點,這個方法具有一定的隨機性。但是,該方案沒有考慮節(jié)點的負載情況,而且,系統(tǒng)中每個節(jié)點的負載分配跟請求的關鍵字有較大的關聯(lián),造成系統(tǒng)中每個節(jié)點的負載出現(xiàn)不均衡的概率比較大,因此,基于Kademlia算法雖然和Chord算法同樣解決了分布式集群環(huán)境下的處理節(jié)點動態(tài)變化和數(shù)據(jù)快速存取過程。但是,它們的共同缺點是均沒有負載均衡的策略,系統(tǒng)中的節(jié)點都可能出現(xiàn)負載過重或者過輕的現(xiàn)象。查找現(xiàn)有的論文和專利申請等資料,發(fā)現(xiàn)有2篇專利申請涉及到基于P2P技術的分布式負載均衡機制,分別介紹和對比分析如下。《一種集群服務的負載均衡方法和裝置》(公開號CN102137128A)介紹一種基于反饋機制的動態(tài)負載均衡技術,其方法是首先獲得集群中負載節(jié)點的負載能力,再根據(jù)負載能力獲得負載節(jié)點的負載因子,再根據(jù)負載因子生成負載分配序列;當接收到待分配的服務請求時,根據(jù)服務請求生成隨機數(shù),再把生成的隨機數(shù)根據(jù)所有節(jié)點負載因子總和取模余,得到一個參考值,再以負載節(jié)點的負載因子為參考值的節(jié)點做為接受請求的節(jié)點。但是,其沒有提供解決節(jié)點動態(tài)變化的管理問題,在分布式集群環(huán)境下應用具有一定的局限性。
《一種DHT網(wǎng)絡負載均衡裝置及虛節(jié)點劃分的方法》(公開號CN101834897A)介紹了一種DHT網(wǎng)絡負載均衡裝置結構組成,以及其虛節(jié)點的劃分方法節(jié)點加入網(wǎng)絡時,通過性能模型定義自身節(jié)點級別,若本身為弱節(jié)點,找到臨近的弱節(jié)點,并與鄰近的弱節(jié)點合并;接著,該節(jié)點退出網(wǎng)絡并與找到的臨近弱節(jié)點建立連接,共同組成一個強虛節(jié)點,同時退出節(jié)點,通過相鄰弱節(jié)點與系統(tǒng)中的其他節(jié)點進行交互,其他節(jié)點將退出節(jié)點看成為強虛節(jié)點的一部分;節(jié)點合并后的調(diào)整,使得節(jié)點查詢裝置只包含強虛節(jié)點ID,由強虛節(jié)點給各弱節(jié)點分配負載,實現(xiàn)負載均衡。該方法有效解決了節(jié)點動態(tài)變化的管理問題,但是,因為強虛節(jié)點的數(shù)量少于弱節(jié)點的數(shù)量,不可避免造成弱節(jié)點扎堆和系統(tǒng)整體均衡性不佳的情況。綜合上述兩個專利申請的方技術案,盡管其在一定程度上解決節(jié)點動態(tài)變化和系統(tǒng)負載均衡的問題。其系統(tǒng)負載均衡性是通過三層來保證的第一層是請求到參考值的均衡分布,第二層是參考值到強虛節(jié)點的均衡映射,第三層是強虛節(jié)點將請求均衡分配給其負責的各弱節(jié)點。但是,這樣處理仍然不能很好地解決分布式集群環(huán)境中的負載均衡問題,其原因在于首先因其存在強虛節(jié)點層,當一個物理節(jié)點變動時,需要更改弱節(jié)點到強虛節(jié)點的映射關系和強虛節(jié)點到參考值的映射關系,一個弱節(jié)點的變動可能還會引起其鄰居強虛節(jié)點的變動;因此當系統(tǒng)規(guī)模較大、節(jié)點動態(tài)變化較頻繁時,強虛節(jié)點的變更給系統(tǒng)帶來的開銷會嚴重影響系統(tǒng)的整體性能和穩(wěn)定性。其次,由于其強虛節(jié)點作為多個弱節(jié)點、即實際處理節(jié)點的集合,在第二層參考值到強虛節(jié)點的均衡映射只是保證了請求到弱節(jié)點集合的均衡性,并沒有實現(xiàn)分布式集群系統(tǒng)全局意義上的負載均衡。因此,如何對現(xiàn)有的分布式負載均衡技術繼續(xù)進行改進和提高,就成為業(yè)內(nèi)科技人員關注的新課題。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的是提供一種基于P2P技術的分布式負載均衡系統(tǒng)和方法,本發(fā)明系統(tǒng)用于分布式網(wǎng)絡環(huán)境下,能夠實現(xiàn)具有分布式仲裁功能、有效避免系統(tǒng)出現(xiàn)單點失效情況的負載均衡,該系統(tǒng)和方法能夠支持分布式集群系統(tǒng)中節(jié)點增加和移出等情況下實現(xiàn)動態(tài)變化的負載均衡,并且可以有效保證環(huán)境變化后各節(jié)點的負載均衡。為了達到上述目的,本發(fā)明提供了一種基于P2P技術的分布式負載均衡系統(tǒng),其特征在于該系統(tǒng)由具有均衡負載功能的分布式處理集群所組成,該處理集群內(nèi)沒有集中控制的中心節(jié)點,只設有分設于不同服務器、并分別用作該系統(tǒng)分布式控制核心的多個同構或異構的處理節(jié)點,每個處理節(jié)點都能獨立提供分布式仲裁的負載均衡功能,且各自的處理事件的權限與均衡負載的功能都相同,異構處理節(jié)點的差異只是其事件的處理速率不同;當客戶端向分布式處理集群實時發(fā)送海量數(shù)據(jù)處理請求時,該系統(tǒng)的某個處理節(jié)點完成請求處理后,將產(chǎn)生的中間結果封裝為事件,發(fā)往其它處理節(jié)點繼續(xù)處理;各處理節(jié)點在分發(fā)事件過程中,始終采用分布式負載均衡方法保證事件分發(fā)的負載均衡,直到產(chǎn)生最終結果并返還給客戶端;該處理節(jié)點設有處理層和通信層;其中處理層,由包含多個處理單元的處理單元容器所組成,負責進行事件處理接收來自通信層的事件,再根據(jù)事件類型和每個事件所設定屬性的屬性值,將該事件交由特定處理單元進行處理,同時負責將該事件處理完成后產(chǎn)生的新事件或最終結果,交給通信層進行分發(fā)與發(fā)送;通信層,用于監(jiān)聽、分發(fā)事件及實現(xiàn)分布式負載均衡負責從網(wǎng)絡接收事件并轉交給處理層;然后接收處理層完成處理后產(chǎn)生的新事件或最終結果,再使用分布式負載均衡方法將該新事件或最終結果分發(fā)給其他處理節(jié)點或客戶端,保證該分布式處理集群中的各 處理節(jié)點負載均衡;設有事件監(jiān)聽、事件分發(fā)、事件發(fā)送、負載管理和分布式集群管理共五個模塊。為了達到上述目的,本發(fā)明還提供了一種基于P2P技術的分布式負載均衡系統(tǒng)的工作方法,其特征在于每個處理節(jié)點的通信層中的事件分發(fā)模塊和負載管理模塊協(xié)同完成基于虛擬節(jié)點與處理節(jié)點之間映射的事件分發(fā)方法,實現(xiàn)基于P2P技術的分布式負載均衡;所述方法包括下述兩個操作步驟步驟1,每個處理節(jié)點的通信層中的負載管理模塊創(chuàng)建或更新虛擬節(jié)點映射表和動態(tài)負載信息表步驟2,每個處理節(jié)點的通信層中的事件分發(fā)模塊與負載管理模塊交互,根據(jù)虛擬節(jié)點映射表執(zhí)行事件分發(fā)決策操作,將每個事件分發(fā)到相應的處理節(jié)點,并實現(xiàn)負載均衡事件分發(fā)模塊計算每個事件的關鍵屬性的哈希值,再將該哈希值除以虛擬節(jié)點總個數(shù)所得到的余數(shù),作為將該事件準備分發(fā)到的虛擬節(jié)點編號;事件分發(fā)模塊與負載管理模塊交互,從虛擬節(jié)點映射表查找該虛擬節(jié)點編號及其所對應的處理節(jié)點編號,以獲取準備將該事件分發(fā)到的處理節(jié)點編號。本發(fā)明系統(tǒng)和方法的主要創(chuàng)新技術是采用在系統(tǒng)的通信層建立虛擬節(jié)點映射表和動態(tài)負載信息表來實現(xiàn)分布式負載均衡。本發(fā)明中的虛擬節(jié)點概念與DHT算法中一致性哈希的哈希環(huán)值有相似之處,但是,本發(fā)明的事件分發(fā)方法是對一致性哈希中的均衡策略的改進,更具優(yōu)勢。究其原因在于DHT算法中的一致性哈希是將資源映射到哈希環(huán)上的數(shù)值,然后,某段哈希環(huán)上的數(shù)值就與某個處理節(jié)點相對應;由于處理節(jié)點在哈希環(huán)上是隨機分布的,在查詢處理節(jié)點時,需要順時針或逆時針遍歷所有處理節(jié)點的集合,這樣就會產(chǎn)生處理節(jié)點扎堆和查詢效率不高的缺陷。本發(fā)明是先用哈希方法獲取虛擬節(jié)點編號,然后再映射到處理節(jié)點。本發(fā)明保證虛擬節(jié)點編號可以均勻地分布在哈希環(huán)上。此外,通過第一階段的哈希方法分散性和第二階段的虛擬節(jié)點映射到處理節(jié)點的均衡性,以保證系統(tǒng)全局意義上的均衡性,并且,在查詢處理節(jié)點時,只需在虛擬節(jié)點映射表中一次查詢便能獲知處理節(jié)點,查詢效率高。因而,本發(fā)明分布式負載均衡方法的實質(zhì)是一種改進的DHT實現(xiàn)方法。多次的仿真實施例的試驗證明,本發(fā)明具有很好的推廣應用前景。


圖I是本發(fā)明基于P2P技術的分布式負載均衡系統(tǒng)總體結構組成示意圖。圖2是本發(fā)明分布式負載均衡系統(tǒng)中的處理節(jié)點組成結構示意圖。圖3是本發(fā)明基于P2P技術的分布式負載均衡系統(tǒng)的工作方法流程圖。圖4是本發(fā)明分布式負載均衡系統(tǒng)中的事件分發(fā)方案示意圖。圖5是本發(fā)明分布式負載均衡系統(tǒng)中分布式負載均衡事件分發(fā)時序圖。 圖6是本發(fā)明分布式負載均衡系統(tǒng)中新增處理節(jié)點表的更新操作時序圖。圖7是本發(fā)明分布式負載均衡系統(tǒng)中處理節(jié)點動態(tài)移出表的更新操作時序圖。
具體實施例方式為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面結合附圖和實施例對本發(fā)明作進一步的詳細描述。本發(fā)明是一種基于對等P2P (Peer-to-Peer)技術的分布式負載均衡系統(tǒng),同時,提供了一種基于該系統(tǒng)的負載均衡方法。首先介紹系統(tǒng)結構組成參見圖1,本發(fā)明基于P2P技術的分布式負載均衡系統(tǒng)由具有均衡負載功能的分布式處理集群所組成,該處理集群內(nèi)沒有中心節(jié)點(即集中控制節(jié)點),只有分設于不同服務器、并分別用作該系統(tǒng)分布式控制核心的多個同構或異構的處理節(jié)點(實際環(huán)境部署時,同一臺服務器也可以設置多個處理節(jié)點),每個處理節(jié)點都能獨立提供分布式仲裁的負載均衡功能,且各自處理事件的權限與均衡負載的功能都相同,異構處理節(jié)點的差異只是其事件的處理速率不同。當客戶端向分布式處理集群實時發(fā)送海量數(shù)據(jù)處理請求時,該系統(tǒng)的某個處理節(jié)點完成請求處理后,將產(chǎn)生的中間結果封裝為事件,并發(fā)往其它處理節(jié)點繼續(xù)處理。而且,各處理節(jié)點在分發(fā)事件過程中,始終采用分布式負載均衡方法保證事件分發(fā)的負載均衡,直到產(chǎn)生最終結果并返還給客戶端。參見圖2,介紹處理節(jié)點內(nèi)部功能模塊,其設有處理層和通信層;其中處理層由包含多個處理單元的處理單元容器所組成,負責進行事件處理接收來自通信層的事件,再根據(jù)事件類型和每個事件所設定屬性的屬性值,將該事件交由特定處理單元進行處理,同時負責將該事件處理完成后產(chǎn)生的新事件或最終結果,交給通信層進行分發(fā)與發(fā)送。處理層的兩種組成部件功能如下處理單元容器,用于管理和控制其內(nèi)部的各個處理單元,采用設定順序激活相應的處理單元來處理不同事件。處理單元,用于處理特定類型和屬性的事件,負責藉由通信層的事件分發(fā)模塊和事件發(fā)送模塊,將產(chǎn)生的中間處理結果作為新事件,發(fā)往其他處理單元繼續(xù)處理;或者將處理的最終結果返回給客戶端;每個處理單元都是系統(tǒng)預先設置的,或者由第三方程序員開發(fā)并部署到處理節(jié)點上。通信層用于監(jiān)聽、分發(fā)事件及實現(xiàn)分布式負載均衡(參見第4節(jié)):負責從網(wǎng)絡接收事件并轉交給處理層,然后接收處理層完成處理后產(chǎn)生的新事件或最終結果,再使用分布式負載均衡方法將該新事件或最終結果分發(fā)給其他處理節(jié)點或客戶端,保證該分布式處理集群中的各處理節(jié)點負載均衡。設有下述五個模塊事件監(jiān)聽、事件分發(fā)、事件發(fā)送、負載管理和分布式集群管理模塊事件監(jiān)聽模塊,負責接收網(wǎng)絡事件,并交由處理層的處理單元進行處理。事件分發(fā)模塊,負責接收處理層的新事件或最終結果,并按照負載管理模塊提供的負載均衡信息來分發(fā)新事件或最終結果,再經(jīng)由事件發(fā)送模塊將其發(fā)送到其他處理節(jié)點或客戶端。事件發(fā)送模塊,用于將來自事件分發(fā)模塊的新事件或最終結果分別發(fā)送到設定的處理節(jié)點或客戶端,分發(fā)過程中保證系統(tǒng)負載均衡。負載管理模塊,其為處理節(jié)點實現(xiàn)分布式負載均衡方法的關鍵模塊,負責創(chuàng)建與維護事件分發(fā)模塊所需的負載信息,并為此定義了下述幾個重要概念 (A)虛擬節(jié)點是為了實現(xiàn)分布式負載均衡方法而設置的一個與處理節(jié)點相互映射的邏輯符號,每個虛擬節(jié)點只能映射到一個處理節(jié)點,但是,每個處理節(jié)點能夠映射到多個虛擬節(jié)點。虛擬節(jié)點個數(shù)是在系統(tǒng)啟動時設置的,其數(shù)量遠大于處理節(jié)點個數(shù);且在系統(tǒng)運行后,虛擬節(jié)點個數(shù)保持不變;當系統(tǒng)新增或退出處理節(jié)點時,處理節(jié)點及其虛擬節(jié)點之間的映射關系也要根據(jù)調(diào)整算法作相應改變。(B)虛擬節(jié)點映射表是本發(fā)明的重要數(shù)據(jù)結構,設于每個處理節(jié)點的負載管理模塊,用于表示每個虛擬節(jié)點編號及其對應的處理節(jié)點編號,以便在系統(tǒng)分發(fā)事件時,查找該虛擬節(jié)點映射表,根據(jù)虛擬節(jié)點編號獲取其對應的處理節(jié)點。虛擬節(jié)點映射表是根據(jù)每個處理節(jié)點的事件處理速率高低降序排列形成的;因每個處理節(jié)點處理事件的速率不同,故每個處理節(jié)點所分配的對應虛擬節(jié)點個數(shù)也不相等;且在系統(tǒng)運行后,為節(jié)省更新時間,采取增刪處理節(jié)點的動態(tài)負載信息表和虛擬節(jié)點映射表的更新方法來實時更新虛擬節(jié)點映射表。下表I就是一個虛擬節(jié)點映射表的示例其中第一項是虛擬節(jié)點編號,第二項是該虛擬節(jié)點對應的處理節(jié)點編號。在需要進行事件分發(fā)時,即本發(fā)明事件分發(fā)第二階段就是通過根據(jù)虛擬節(jié)點編號查找虛擬節(jié)點映射表的方式,獲取該虛擬節(jié)點對應的處理節(jié)點。
虛擬節(jié)點處理節(jié)點
虛擬節(jié)點O處理節(jié)點O
虛擬節(jié)點I處理節(jié)點I
虛擬節(jié)點2......—
虛擬節(jié)點3—處理節(jié)點K
虛擬節(jié)點4處理節(jié)點O
虛擬節(jié)點5處理節(jié)點I
虛擬節(jié)點6......虛擬節(jié)點7處理節(jié)點K
虛擬節(jié)點N處理節(jié)點K本發(fā)明實施例是根據(jù)每個處理節(jié)點的事件處理速率的高低,采用降序排列方式來初始化虛擬節(jié)點映射表。實際應用時,也可用其它能夠保證按照處理節(jié)點的事件處理速率高低降序排列的方法來初始化虛擬節(jié)點映射表,而且,對于每個處理效率不同的處理節(jié)點,可以給其分配數(shù)量不同的虛擬節(jié)點。需要注意的是,虛擬節(jié)點映射表的初始化方法僅適用于初始構建的時候。系統(tǒng)運行后,為節(jié)省虛擬節(jié)點映射表的更新時間,不再采用該初始化的方法來更新虛擬節(jié)點映射表。在動態(tài)新增或移出處理節(jié)點后,本發(fā)明是采用動態(tài)新增或移出處理節(jié)點的動態(tài)負載信息表和虛擬節(jié)點映射表的更新方法來實時更新虛擬節(jié)點映射表。(C)動態(tài)負載信息表是是本發(fā)明的另一重要數(shù)據(jù)結構,設于每個處理節(jié)點負載管理模塊,用于表示每個處理節(jié)點編號、按照其事件處理速率在理論上分配的虛擬節(jié)點個數(shù) 與其實際對應的虛擬節(jié)點個數(shù)。本發(fā)明系統(tǒng)中各處理節(jié)點對應的虛擬節(jié)點個數(shù)稱為節(jié)點負載數(shù)。在初始建立虛擬節(jié)點映射表時,為方便維護每個處理節(jié)點的負載信息,根據(jù)虛擬節(jié)點映射表信息建立了一張動態(tài)負載信息表。該動態(tài)負載信息表是按照每個處理節(jié)點的負載數(shù)量與其理論上分配的負載數(shù)量之差的絕對值降序排列形成的,且其信息與虛擬節(jié)點映射表的信息逐一對應的。故在虛擬節(jié)點映射表更新時,動態(tài)負載信息表也要相應更新。下表2是一個動態(tài)負載信息表的示例其中第一項是處理節(jié)點編號,第二項是該處理節(jié)點對應的虛擬節(jié)點個數(shù),第三項是一個列表,包含該處理節(jié)點對應的各個虛擬節(jié)點編號。動態(tài)負載信息表中每一項是按照處理節(jié)點負載數(shù)從大到小降序排列的。同時,為了保證分布式處理集群中增加處理節(jié)點時,新增的處理節(jié)點和虛擬節(jié)點的映射集均勻分開,在創(chuàng)建動態(tài)負載信息表時,對每個處理節(jié)點對應的虛擬節(jié)點編號執(zhí)行亂序操作。
處理節(jié)點節(jié)點負載數(shù)虛擬節(jié)點列表
處理節(jié)點O25640,4,0,......
處理節(jié)點I2565,41, I,......
處理節(jié)點 K25619,7, 3,......一虛擬節(jié)點映射表與動態(tài)負載信息表之間的關系在系統(tǒng)啟動時,借助分布式集群管理模塊中的信息創(chuàng)建虛擬節(jié)點映射表;在系統(tǒng)啟動后,利用已經(jīng)建立的虛擬節(jié)點映射表信息創(chuàng)建動態(tài)負載信息表,且在分布式處理集群中有新增或退出處理節(jié)點時,對虛擬節(jié)點映射表和動態(tài)負載信息表進行實時更新。分布式集群管理模塊,負責管理和維護分布式處理集群及其中的全部處理節(jié)點與其對應的虛擬節(jié)點,該分布式處理集群中的各處理節(jié)點也經(jīng)由該分布式集群管理模塊實時獲取該集群中自身與其他處理節(jié)點的鏈接地址、當前存活狀態(tài)、負載狀態(tài)與相關信息。本發(fā)明系統(tǒng)的應用場景主要有下述三種(I)分發(fā)事件場景客戶端向分布式負載均衡系統(tǒng)中的分布式處理集群發(fā)送海量數(shù)據(jù)處理請求,分布式處理集群中的每個處理節(jié)點分別獨立、均等地完成各自的負載決策,且在處理過程中,保證每個處理節(jié)點的負載均衡;并實時向客戶端返回處理結果;(2)新增處理節(jié)點場景客戶端向分布式處理集群發(fā)送海量數(shù)據(jù)處理請求過程中,為減輕該處理集群中各處理節(jié)點的負載壓力,向該處理集群中實時增加新的處理節(jié)點;并在盡可能短時間內(nèi),由新增處理節(jié)點分擔原處理集群中各處理節(jié)點的部分負載,使得新增 處理節(jié)點和原處理集群中各處理節(jié)點重新實現(xiàn)負載均衡。(3)移出處理節(jié)點場景客戶端向該分布式處理集群發(fā)送海量數(shù)據(jù)處理請求過程中,因故障或管理需要等原因,有節(jié)點要遷移離開該處理集群時,由該集群中其它處理節(jié)點承擔該移出處理節(jié)點的負載;并在盡可能短時間內(nèi),使得移出一個或多個處理節(jié)點后的處理集群中的每個處理節(jié)點重新達到負載均衡。參見圖3,介紹本發(fā)明基于P2P技術的分布式負載均衡系統(tǒng)的工作方法每個處理節(jié)點的通信層中的事件分發(fā)模塊和負載管理模塊協(xié)同完成基于虛擬節(jié)點與處理節(jié)點之間映射的事件分發(fā)方法,實現(xiàn)基于P2P技術的分布式負載均衡。包括下述兩個操作步驟步驟1,每個處理節(jié)點的通信層中的負載管理模塊創(chuàng)建或更新虛擬節(jié)點映射表和動態(tài)負載信息表。該步驟I包括下列操作內(nèi)容(11)系統(tǒng)初始建立時,負載管理模塊根據(jù)每個處理節(jié)點的事件處理速率高低采用降序排列方式創(chuàng)建初始化虛擬節(jié)點映射表,此時對于事件處理速率不同的處理節(jié)點,分別設置相應不同的虛擬節(jié)點個數(shù)。該步驟包括下列操作內(nèi)容(IlA)為保證負載均衡,負載管理模塊先計算系統(tǒng)當前每個處理節(jié)點理論上獲取
的負載個數(shù),即其理論負載個數(shù)IoadAfter (i)為
P Γ4Ρ4Π Υ(Λ= 規(guī)—Μ /篇—式中,VIRTUAL N0DES NUM是
> ^P_(APA(111(ι)- -
虛擬節(jié)點總個數(shù),其數(shù)值遠大于系統(tǒng)處理節(jié)點總個數(shù)N ;自然數(shù)i是處理節(jié)點編號,其最大值為N;P_CAPACITY(i)是編號為i的處理節(jié)點的事件處理速率,該事件處理速率取決于包
括CPU和內(nèi)存的權衡因子,或者由專業(yè)測試工具事先測定的-:..>—(週(聊)是系
統(tǒng)當前所有處理節(jié)點的事件處理總速率;(IlB)負載管理模塊順序給每個處理節(jié)點隨機分配IoadAfter(i)個負載,直到所有虛擬節(jié)點都有一個與其對應的處理節(jié)點;且每次分配都要分別在動態(tài)負載信息表和虛擬節(jié)點映射表執(zhí)行相應更新操作。(IlC)負載管理模塊對動態(tài)負載信息表中各個處理節(jié)點按照其當前的實際負載數(shù)與理論負載數(shù)之差的絕對值進行降序排列。( 12)系統(tǒng)運行后,當新增或移出處理節(jié)點時,為使系統(tǒng)盡快重新達到負載均衡,負載管理模塊實時更新虛擬節(jié)點映射表和動態(tài)負載信息表。步驟2 (參見圖4),每個處理節(jié)點的通信層中的事件分發(fā)模塊與負載管理模塊交互,根據(jù)虛擬節(jié)點映射表執(zhí)行事件分發(fā)決策操作,將每個事件分發(fā)到相應的處理節(jié)點,并實現(xiàn)負載均衡事件分發(fā)模塊計算每個事件的關鍵屬性的哈希值,再將該哈希值除以虛擬節(jié)點總個數(shù)所得到的余數(shù),作為將該事件準備分發(fā)到的虛擬節(jié)點編號;事件分發(fā)模塊與負載管理模塊交互,從虛擬節(jié)點映射表查找該虛擬節(jié)點編號及其所對應的處理節(jié)點編號,以獲取準備將該事件分發(fā)到的處理節(jié)點編號。圖4所示的系統(tǒng)事件分發(fā)機制示意圖是本發(fā)明方法的關鍵,為了更詳細地介紹其操作流程,下面根據(jù)本發(fā)明三種應用場景分別介紹三種不同場景下的分布式負載均衡事件分發(fā)流程。 參見圖5,說明分發(fā)事件場景的分布式負載均衡事件分發(fā)操作流程,其對應的是本系統(tǒng)進行海量數(shù)據(jù)處理的場景。分發(fā)事件場景包括下列操作內(nèi)容(Al)處理節(jié)點的事件監(jiān)聽模塊監(jiān)測到網(wǎng)絡中新出現(xiàn)需要處理的事件,就根據(jù)該事件類型將其發(fā)送到處理單元容器,交給相應的處理單元進行處理。需要說明的是,分布式處理集群中每個處理節(jié)點都在時刻監(jiān)聽是否有需處理事件。(A2)該處理單元完成事件處理后,將新產(chǎn)生的事件準備發(fā)往其他處理節(jié)點或由其自身繼續(xù)處理。(A3)事件分發(fā)模塊先計算該新事件屬性的哈希值,再利用哈希方法、即將該哈希值除以虛擬節(jié)點總個數(shù)所得到的余數(shù)(啟動時配置,系統(tǒng)啟動后為常量),作為對應的虛擬節(jié)點編號。(A4)事件分發(fā)模塊與負載管理模塊交互,根據(jù)該虛擬節(jié)點編號查詢虛擬節(jié)點映射表(參見表1),得到該新事件準備分發(fā)到的處理節(jié)點編號;然后,將該新事件與要分發(fā)的對應處理節(jié)點編號信息傳給事件發(fā)送模塊。(A5)事件發(fā)送模塊將該新事件發(fā)往其他處理節(jié)點或自身節(jié)點繼續(xù)處理,直到產(chǎn)生事件最終結果,返回給客戶端。需要注意的是,上述兩個步驟(A3)和(A4)是本發(fā)明負載均衡方法的核心流程,可以看到各個處理節(jié)點分別執(zhí)行負載均衡策略,無中心負載均衡處理節(jié)點,是一種典型的基于p2p技術的分布式負載均衡方法。參見圖6,介紹新增處理節(jié)點場景時、即系統(tǒng)進行海量數(shù)據(jù)處理時,新增一個處理節(jié)點后,其他處理節(jié)點的部分負載分攤給新處理節(jié)點,使得分布式處理集群重新達到負載均衡的操作流程。該場景包括下列操作內(nèi)容(BI)處理節(jié)點的分布式集群管理模塊檢測到新增處理節(jié)點加入,就將該信息通知分布式集群中的所有處理節(jié)點的負載管理模塊,并提供該新增處理節(jié)點的配置信息(包括該新增處理節(jié)點編號、IP地址、事件處理速率和端口號)。(B2)其他各個處理節(jié)點負載管理模塊接收上述信息,再根據(jù)該新增處理節(jié)點信息對動態(tài)負載信息表和虛擬節(jié)點映射表進行更新。該更新方法借鑒了一致性哈希在節(jié)點加入系統(tǒng)時盡量減少系統(tǒng)拓撲維護的思路設置一個通用場景,用于說明增加一個處理節(jié)點時的動態(tài)負載信息表和虛擬節(jié)點映射表更新方法。假設當前系統(tǒng)設有N個處理節(jié)點,總共有VIRTUAL_NODES_NUM個虛擬節(jié)點(VIRTUAL_NODES_NUM遠大于N)。現(xiàn)在要增加一個處理節(jié)點,也就是處理節(jié)點從N個增加到N+1個。具體操作內(nèi)容如下(B2A)為保證負載均衡,負載管理模塊先計算系統(tǒng)當前包括新增處理節(jié)點在內(nèi)的所有處理節(jié)點理論上將獲取的負載個數(shù),即其理論負載個數(shù)IoadAfter⑴為
ΜΑ·_、= VimAL - NODES - _,式中,自然數(shù)i是處理節(jié)點編號,
其最大值為N ;, VIRTUAL_NODES_NUM是虛擬節(jié)點總個數(shù),其數(shù)值遠大于系統(tǒng)處理節(jié)點總個數(shù)N ;P_CAPACITY(i)是編號為i的處理節(jié)點的事件處理速率,Σ :;Ρ—(、ΑΡΑαΤΥ( )是系統(tǒng)當前所有處理節(jié)點的總事件處理速率;(Β2Β)負載管理模塊將動態(tài)負載信息表按照處理節(jié)點的實際負載數(shù)與理論負載數(shù)之差的絕對值進行降序排列;
(B2C)負載管理模塊按照調(diào)整后的動態(tài)負載信息表的排列順序,從絕對值最大的處理節(jié)點k開始,將(I IoadAfter (k)-IoadActual (k) | )個負載轉移給新增處理節(jié)點,式中,IoadActual (k)為處理節(jié)點的實際負載個數(shù);直到新增處理節(jié)點i的理論負載個數(shù)與實際負載個數(shù)相等;需要注意的是對于需要轉移負載給新增處理節(jié)點的最后一個處理節(jié)點1,其轉移的負載個數(shù)應不多于(IloadAfter(I)-IoadActual(I) | ),以保證該新增處理節(jié)點所分配的實際負載個數(shù)不大于其理論分配的負載個數(shù),且負載數(shù)多的處理節(jié)點移出更多的負載(B2D)根據(jù)上述步驟調(diào)整結果,對虛擬節(jié)點映射表和動態(tài)負載信息表做相應更新遍歷處理節(jié)點的動態(tài)負載信息表,對于該表中每個處理節(jié)點轉移(I IoadAfter (k)-IoadActual (k) | )個負載給新增處理節(jié)點,直到新增處理節(jié)點i理論負載個數(shù)IoadAfteHi)與實際負載個數(shù)相等IoadActual (i);且每次轉移都要分別在動態(tài)負載信息表和虛擬節(jié)點映射表執(zhí)行相應更新操作;再在動態(tài)負載信息表上新建一行,用于表示該新增處理節(jié)點的負載信息;最后,對動態(tài)負載信息表中各個處理節(jié)點重新按照其實際負載數(shù)與理論負載數(shù)之差的絕對值進行降序排列。(B3)每個處理節(jié)點負載管理模塊完成虛擬節(jié)點映射表和動態(tài)負載信息表的更新后,新增處理節(jié)點就分擔該分布式處理集群中的所有原處理節(jié)點的部分負載,使得新增處理節(jié)點和該處理集群中的所有原處理節(jié)點很快重新達到負載均衡。參見圖7,介紹對于處理節(jié)點移出場景的分布式負載均衡表更新流程。該場景是本發(fā)明系統(tǒng)進行海量數(shù)據(jù)處理時,某個處理節(jié)點因故障或管理原因被移出系統(tǒng)后,分布式處理集群其他處理節(jié)點取代移出處理節(jié)點工作,重新達到負載均衡的過程。此時的操作步驟如下(Cl)處理節(jié)點的分布式集群管理模塊采用各個處理節(jié)點之間互發(fā)心跳信息或其他方法,檢測到該集群中有移出處理節(jié)點的狀況處理節(jié)點正常關閉或因故障而宕機,使得該集群中的處理節(jié)點減少的現(xiàn)象。(C2)發(fā)現(xiàn)移出處理節(jié)點的處理節(jié)點中的分布式集群管理模塊,通知該分布式集群中的所有處理節(jié)點的負載管理模塊有處理節(jié)點移出,并提供該移出處理節(jié)點包括其編號、IP地址、事件處理速率和端口號的配置信息。(C3)其他各個處理節(jié)點的負載管理模塊接收上述信息后,根據(jù)該移出的處理節(jié)點信息更新動態(tài)負載信息表和虛擬節(jié)點映射表。這個更新過程是重新達到負載均衡的核心,本發(fā)明對于處理節(jié)點移出的動態(tài)負載信息表和虛擬節(jié)點映射表的更新方法同樣也借鑒了一致性哈希在節(jié)點加入系統(tǒng)時盡量減少系統(tǒng)拓撲維護的思想。處理節(jié)點移出的動態(tài)負載信息表和虛擬節(jié)點映射表的詳細更新過程包括下列操作內(nèi)容(C3A)假設原處理節(jié)點總個數(shù)為N,虛擬節(jié)點總個數(shù)為VIRTUAL_
N0DES_NUM,且VIRTUAL_NODES_NUM遠大于N,此時移出一個處理節(jié)點,即當
前處理節(jié)點總個數(shù)為(N-I);同時,計算當前系統(tǒng)各處理節(jié)點的理論負載為
P C APiCiTYii) ·
—=NODES — NtfM 隱ryr⑴*并對動態(tài)負載信息表中各
個處理節(jié)點重新按照其實際負載數(shù)與理論負載數(shù)之差的絕對值降序排列;(C3B)為保證移出處理節(jié)點的負載轉移后,仍然實現(xiàn)均衡負載,采取下述更新策略按照調(diào)整后的動態(tài)負載信息表的排列順序,從絕對值最大的處理節(jié)點k開始,逐個進行下述操作從該移出處理節(jié)點處獲取(I IoadAfter (k)-IoadActual (k) | )個負載,直到該移出處理節(jié)點的所有負載都已被重新分配給其他各個處理節(jié)點;需要注意的是,操作到動態(tài)負載信息表中最后一個處理節(jié)點時,如果該移出處理節(jié)點的負載還沒有全部被分配出去,則將該移出處理節(jié)點剩余的所有負載都轉移給最后一個處理節(jié)點,保證負載數(shù)少的處理節(jié)點能從該移出處理節(jié)點處獲取更多負載;(C3C)根據(jù)上述操作結果,相應修改虛擬節(jié)點映射表和動態(tài)負載信息表遍歷處理節(jié)點的動態(tài)負載信息表,該表中的每個處理節(jié)點從該移出處理節(jié)點處獲取(I IoadAfter (k)-IoadActual (k) I)個負載,其中,自然數(shù)k為遍歷時的當前處理節(jié)點編號;直到該移出處理節(jié)點的所有負載都已被重新分配給其他各個處理節(jié)點;且每次轉移負載都要分別在動態(tài)負載信息表和虛擬節(jié)點映射表執(zhí)行相應修改操作;(C34)在動態(tài)負載信息表上刪除已經(jīng)移出的處理節(jié)點信息;最后,對動態(tài)負載信息表中各個處理節(jié)點重新按照其實際負載數(shù)與理論負載數(shù)之差的絕對值進行降序排列。(C4)每個處理節(jié)點負載管理模塊更新完成虛擬節(jié)點映射表和動態(tài)負載信息表后,該集群中的其他各個處理節(jié)點就承擔了該退出處理節(jié)點的負載,并在盡可能短的時間內(nèi),移出處理節(jié)點后的該分布式處理集群重新實現(xiàn)負載均衡。本發(fā)明已經(jīng)進行了大量的仿真實施試驗,試驗的結果成功的,實現(xiàn)了發(fā)明目的。
權利要求
1.一種基于點對點P2P (Peer-to-Peer)技術的分布式負載均衡系統(tǒng),其特征在于該系統(tǒng)由具有均衡負載功能的分布式處理集群所組成,該處理集群內(nèi)沒有集中控制的中心節(jié)點,只設有分設于不同服務器、并分別用作該系統(tǒng)分布式控制核心的多個同構或異構的處理節(jié)點,每個處理節(jié)點都能獨立提供分布式仲裁的負載均衡功能,且各自的處理事件的權限與均衡負載的功能都相同,異構處理節(jié)點的差異只是其事件的處理速率不同;當客戶端向分布式處理集群實時發(fā)送海量數(shù)據(jù)處理請求時,該系統(tǒng)的某個處理節(jié)點完成請求處理后,將產(chǎn)生的中間結果封裝為事件,發(fā)往其它處理節(jié)點繼續(xù)處理;各處理節(jié)點在分發(fā)事件過程中,始終采用分布式負載均衡方法保證事件分發(fā)的負載均衡,直到產(chǎn)生最終結果并返還給客戶端;該處理節(jié)點設有處理層和通信層;其中 處理層,由包含多個處理單元的處理單元容器所組成,負責進行事件處理接收來自通信層的事件,再根據(jù)事件類型和每個事件所設定屬性的屬性值,將該事件交由特定處理單元進行處理,同時負責將該事件處理完成后產(chǎn)生的新事件或最終結果,交給通信層進行分發(fā)與發(fā)送; 通信層,用于監(jiān)聽、分發(fā)事件及實現(xiàn)分布式負載均衡負責從網(wǎng)絡接收事件并轉交給處理層;然后接收處理層完成處理后產(chǎn)生的新事件或最終結果,再使用分布式負載均衡方法將該新事件或最終結果分發(fā)給其他處理節(jié)點或客戶端,保證該分布式處理集群中的各處理節(jié)點負載均衡;設有事件監(jiān)聽、事件分發(fā)、事件發(fā)送、負載管理和分布式集群管理共五個模塊。
2.根據(jù)權利要求I所述的系統(tǒng),其特征在于所述處理層的各個組成部件功能如下 處理單元容器,用于管理和控制其內(nèi)部的各個處理單元,采用設定順序激活相應的處理單元來處理不同事件; 處理單元,用于處理特定類型和屬性的事件,負責藉由通信層的事件分發(fā)模塊和事件發(fā)送模塊,將產(chǎn)生的中間處理結果作為新事件,發(fā)往其他處理單元繼續(xù)處理;或者將處理的最終結果返回給客戶端;每個處理單元都是系統(tǒng)預先設置的,或者由第三方程序員開發(fā)并部署到處理節(jié)點上。
3.根據(jù)權利要求I所述的系統(tǒng),其特征在于所述通信層的各個組成部件功能如下 事件監(jiān)聽模塊,負責接收網(wǎng)絡事件,并交由處理層的處理單元進行處理; 事件分發(fā)模塊,負責接收處理層的新事件或最終結果,并按照負載管理模塊提供的負載均衡信息來分發(fā)新事件或最終結果,再經(jīng)由事件發(fā)送模塊將其發(fā)送到其他處理節(jié)點或客戶端; 事件發(fā)送模塊,用于將來自事件分發(fā)模塊的新事件或最終結果分別發(fā)送到設定的處理節(jié)點或客戶端; 負載管理模塊,負責創(chuàng)建與維護事件分發(fā)模塊所需的負載信息,即虛擬節(jié)點映射表與動態(tài)負載信息表在系統(tǒng)啟動時,借助分布式集群管理模塊中的信息創(chuàng)建虛擬節(jié)點映射表;在系統(tǒng)啟動后,利用已經(jīng)建立的虛擬節(jié)點映射表信息創(chuàng)建動態(tài)負載信息表,且在分布式處理集群中有新增或退出處理節(jié)點時,對虛擬節(jié)點映射表和動態(tài)負載信息表進行實時更新; 分布式集群管理模塊,負責管理和維護分布式處理集群及其中的全部處理節(jié)點與其對應的虛擬節(jié)點,該分布式處理集群中的各處理節(jié)點也經(jīng)由該分布式集群管理模塊實時獲取該集群中自身與其他處理節(jié)點的鏈接地址、當前存活狀態(tài)、負載狀態(tài)與相關信息。
4.根據(jù)權利要求3所述的系統(tǒng),其特征在于所述虛擬節(jié)點是為了實現(xiàn)分布式負載均衡方法而設置的一個與處理節(jié)點相互映射的邏輯符號,每個虛擬節(jié)點只能映射到一個處理節(jié)點,但每個處理節(jié)點能夠映射到多個虛擬節(jié)點;虛擬節(jié)點個數(shù)是在系統(tǒng)啟動時設置的,其數(shù)量遠大于處理節(jié)點個數(shù);且在系統(tǒng)運行后,虛擬節(jié)點個數(shù)保持不變;當系統(tǒng)新增或退出處理節(jié)點時,處理節(jié)點及其虛擬節(jié)點之間的映射關系也根據(jù)調(diào)整算法作相應改變; 所述虛擬節(jié)點映射表設于每個處理節(jié)點的負載管理模塊,用于表示每個虛擬節(jié)點編號及其對應的處理節(jié)點編號,以便在系統(tǒng)分發(fā)事件時,查找該虛擬節(jié)點映射表,根據(jù)虛擬節(jié)點編號獲取其對應的處理節(jié)點;該虛擬節(jié)點映射表是根據(jù)每個處理節(jié)點的事件處理速率高低降序排列形成的;因每個處理節(jié)點處理事件的速率不同,故每個處理節(jié)點所分配的對應虛擬節(jié)點個數(shù)也不相等;且在系統(tǒng)運行后,為節(jié)省更新時間,采取增刪處理節(jié)點的動態(tài)負載信息表和虛擬節(jié)點映射表的更新方法來實時更新虛擬節(jié)點映射表; 所述動態(tài)負載信息表設于每個處理節(jié)點負載管理模塊,用于表示每個處理節(jié)點編號、按照其事件處理速率在理論上分配的虛擬節(jié)點個數(shù)與其實際對應的虛擬節(jié)點個數(shù);該動態(tài)負載信息表是按照每個處理節(jié)點的負載數(shù)量與其理論上分配的負載數(shù)量之差的絕對值降序排列形成的,且其信息與虛擬節(jié)點映射表的信息逐一對應;故在虛擬節(jié)點映射表更新時,動態(tài)負載信息表也要相應更新。
5.一種基于P2P技術的分布式負載均衡系統(tǒng)的工作方法,其特征在于每個處理節(jié)點的通信層中的事件分發(fā)模塊和負載管理模塊協(xié)同完成基于虛擬節(jié)點與處理節(jié)點之間映射的事件分發(fā)方法,實現(xiàn)基于P2P技術的分布式負載均衡;所述方法包括下述兩個操作步驟 步驟1,每個處理節(jié)點的通信層中的負載管理模塊創(chuàng)建或更新虛擬節(jié)點映射表和動態(tài)負載信息表 步驟2,每個處理節(jié)點的通信層中的事件分發(fā)模塊與負載管理模塊交互,根據(jù)虛擬節(jié)點映射表執(zhí)行事件分發(fā)決策操作,將每個事件分發(fā)到相應的處理節(jié)點,并實現(xiàn)負載均衡 事件分發(fā)模塊計算每個事件的關鍵屬性的哈希值,再將該哈希值除以虛擬節(jié)點總個數(shù)所得到的余數(shù),作為將該事件準備分發(fā)到的虛擬節(jié)點編號; 事件分發(fā)模塊與負載管理模塊交互,從虛擬節(jié)點映射表查找該虛擬節(jié)點編號及其所對應的處理節(jié)點編號,以獲取準備將該事件分發(fā)到的處理節(jié)點編號。
6.根據(jù)權利要求5所述的方法,其特征在于所述方法的應用場景有三種 分發(fā)事件客戶端向分布式負載均衡系統(tǒng)中的分布式處理集群發(fā)送海量數(shù)據(jù)處理請求,分布式處理集群中的各個處理節(jié)點分別獨立、均等地完成各自的負載決策,且在處理過程中,保證各個處理節(jié)點的負載均衡;并實時向客戶端返回處理結果; 新增處理節(jié)點客戶端向分布式處理集群發(fā)送海量數(shù)據(jù)處理請求過程中,為減輕該處理集群中各處理節(jié)點的負載壓力,在該處理集群中實時增加新的處理節(jié)點;并在盡可能短時間內(nèi),由新增處理節(jié)點分擔原處理集群中各處理節(jié)點的部分負載,使得新增處理節(jié)點和原處理集群中各處理節(jié)點重新實現(xiàn)負載均衡; 移出處理節(jié)點客戶端向該分布式處理集群發(fā)送海量數(shù)據(jù)處理請求過程中,因故障或管理需要,有節(jié)點要遷移離開該處理集群時,由該處理集群中的其它處理節(jié)點承擔該移出處理節(jié)點的負載;并在盡可能短時間內(nèi),使得移出一個或多個處理節(jié)點后的該處理集群中的各個處理節(jié)點重新達到負載均衡。
7.根據(jù)權利要求5所述的方法,其特征在于所述步驟I包括下列操作內(nèi)容 (11)系統(tǒng)初始建立時,負載管理模塊根據(jù)每個處理節(jié)點的事件處理速率高低降序排列方式創(chuàng)建初始化虛擬節(jié)點映射表,此時對于事件處理速率不同的處理節(jié)點,分別設置相應不同的虛擬節(jié)點個數(shù); (12)系統(tǒng)運行后,當新增或移出處理節(jié)點時,為使系統(tǒng)盡快重新達到負載均衡,負載管理模塊實時更新虛擬節(jié)點映射表和動態(tài)負載信息表。
8.根據(jù)權利要求7所述的方法,其特征在于所述步驟(11)包括下列操作內(nèi)容 (IIA)為保證負載均衡,負載管理模塊先計算系統(tǒng)當前每個處理節(jié)點理論上獲取的負載個數(shù),即其理論負載個數(shù)IoadAfter (i) P CAPACnYif\為:k__:vmnw._m)ms-Ni· ⑶濃“;式中,virtual_nodes_num 是虛擬節(jié)點總個數(shù),其數(shù)值遠大于系統(tǒng)處理節(jié)點總個數(shù)N ;自然數(shù)i是處理節(jié)點編號,其最大值為N ;P_CAPACITY(i)是編號為i的處理節(jié)點的事件處理速率,該事件處理速率取決于包括CPU和內(nèi)存的權衡因子,或者由專業(yè)測試工具事先測定的Tlp是系統(tǒng)當前所有處理節(jié)點的事件處理總速率; (IIB)負載管理模塊順序給每個處理節(jié)點隨機分配IoadAfteHi)個負載,直到所有虛擬節(jié)點都有一個與其對應的處理節(jié)點;且每次分配都要分別在動態(tài)負載信息表和虛擬節(jié)點映射表執(zhí)行相應更新操作。
(IIC)負載管理模塊對動態(tài)負載信息表中各個處理節(jié)點按照其當前的實際負載數(shù)與理論負載數(shù)之差的絕對值進行降序排列。
9.根據(jù)權利要求6所述的方法,其特征在于所述方法應用于分發(fā)事件場景時,包括下列操作內(nèi)容 (Al)處理節(jié)點的事件監(jiān)聽模塊監(jiān)測到網(wǎng)絡中新出現(xiàn)需要處理的事件,就根據(jù)該事件類型將其發(fā)送到處理單元容器,交給相應的處理單元進行處理; (A2)該處理單元完成事件處理后,將新產(chǎn)生的事件準備發(fā)往其他處理節(jié)點或由其自身繼續(xù)處理; (A3)事件分發(fā)模塊先計算該新事件屬性的哈希值,再利用哈希方法、即將該哈希值除以虛擬節(jié)點總個數(shù)所得到的余數(shù),作為對應的虛擬節(jié)點編號; (A4)事件分發(fā)模塊與負載管理模塊交互,根據(jù)該虛擬節(jié)點編號查詢虛擬節(jié)點映射表,得到該新事件準備分發(fā)到的處理節(jié)點編號;然后,將該新事件與要分發(fā)的對應處理節(jié)點編號信息傳給事件發(fā)送模塊; (A5)事件發(fā)送模塊將該新事件發(fā)往其他處理節(jié)點或自身節(jié)點繼續(xù)處理,直到產(chǎn)生事件最終結果,返回給客戶端。
10.根據(jù)權利要求6所述的方法,其特征在于所述方法應用于新增處理節(jié)點場景時,包括下列操作內(nèi)容 (BI)處理節(jié)點的分布式集群管理模塊檢測到新增處理節(jié)點加入,就將該信息通知分布式集群中的所有處理節(jié)點的負載管理模塊,并提供該新增處理節(jié)點的包括編號、IP地址、事件處理速率和端口號的配置信息; (B2)其他各個處理節(jié)點負載管理模塊接收上述信息,再根據(jù)該新增處理節(jié)點信息對動態(tài)負載信息表和虛擬節(jié)點映射表進行更新; (B3)每個處理節(jié)點負載管理模塊完成虛擬節(jié)點映射表和動態(tài)負載信息表的更新后,新增處理節(jié)點就分擔該分布式處理集群中的所有原處理節(jié)點的部分負載,使得新增處理節(jié)點和該處理集群中的所有原處理節(jié)點很快重新達到負載均衡。
11.根據(jù)權利要求10所述的方法,其特征在于所述步驟(B2)中,動態(tài)負載信息表和虛擬節(jié)點映射表的更新包括下列操作內(nèi)容(B2A)為保證負載均衡,負載管理模塊先計算系統(tǒng)當前包括新增處理節(jié)點在內(nèi)的所有處理節(jié)點理論上將獲取的負載個數(shù),即其理論負載個數(shù)IoadAfter⑴為
12.根據(jù)權利要求6所述的方法,其特征在于所述方法應用于移出處理節(jié)點場景時,包括下列操作內(nèi)容 (Cl)處理節(jié)點的分布式集群管理模塊采用各個處理節(jié)點之間互發(fā)心跳信息或其他方法,檢測到該集群中有移出處理節(jié)點的狀況處理節(jié)點正常關閉或因故障而宕機,使得該集群中的處理節(jié)點減少的現(xiàn)象; (C2)發(fā)現(xiàn)移出處理節(jié)點的處理節(jié)點中的分布式集群管理模塊,通知該分布式集群中的所有處理節(jié)點的負載管理模塊有處理節(jié)點移出,并提供該移出處理節(jié)點包括其編號、IP地址、事件處理速率和端口號的配置信息; (C3)其他各個處理節(jié)點的負載管理模塊接收上述信息后,根據(jù)該移出的處理節(jié)點信息更新動態(tài)負載信息表和虛擬節(jié)點映射表;(C4)每個處理節(jié)點負載管理模塊更新完成虛擬節(jié)點映射表和動態(tài)負載信息表后,該集群中的其他各個處理節(jié)點就承擔了該退出處理節(jié)點的負載,并在盡可能短的時間內(nèi),移出處理節(jié)點后的該分布式處理集群重新實現(xiàn)負載均衡。
13.根據(jù)權利要求12所述的方法,其特征在于所述步驟(C3)中,動態(tài)負載信息表和虛擬節(jié)點映射表的更新包括下列操作內(nèi)容 (C31)假設原處理節(jié)點總個數(shù)為N,虛擬節(jié)點總個數(shù)為VIRTUAL_NODES_NUM,且VIRTUAL_NODES_NUM遠大于N,此時移出一個處理節(jié)點,即當前處理節(jié)點總個數(shù)為(N-I);同時,計算當前系統(tǒng)各處理節(jié)點的理論負載為
全文摘要
一種基于P2P技術的分布式負載均衡系統(tǒng)和方法,系統(tǒng)由均衡負載功能的分布式處理集群所組成,該集群內(nèi)只設有分設于不同服務器的、由處理層和通信層構成的多個同構或異構處理節(jié)點,每個處理節(jié)點都能獨立承擔分布式仲裁的負載均衡功能,且其權限與功能都相同,差異只是事件的處理速率不同;當客戶端向分布式處理集群實時發(fā)送海量數(shù)據(jù)處理請求時,某個處理節(jié)點完成請求處理后,將產(chǎn)生的中間結果封裝為事件,發(fā)往其它處理節(jié)點繼續(xù)處理;各處理節(jié)點在分發(fā)事件過程中,始終采用分布式負載均衡方法保證事件分發(fā)的負載均衡,直到產(chǎn)生最終結果并返還給客戶端。本發(fā)明有效避免系統(tǒng)出現(xiàn)單點失效的負載均衡,能夠在分布式集群系統(tǒng)中實現(xiàn)節(jié)點動態(tài)變化的負載均衡。
文檔編號H04L29/08GK102882973SQ20121038418
公開日2013年1月16日 申請日期2012年10月11日 優(yōu)先權日2012年10月11日
發(fā)明者趙耀, 宋穎瑩, 彭書凱, 鄒志勇, 楊放春, 鄒華, 孫其博, 林榮恒, 李靜林, 劉志晗 申請人:北京郵電大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1