專利名稱:自動配置Java EE應(yīng)用集群的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及Java EE應(yīng)用技術(shù)領(lǐng)域,尤其是涉及一種自動配置Java EE應(yīng)用集群的裝置和方法。
背景技術(shù):
越來越多的關(guān)鍵任務(wù)和大型應(yīng)用運(yùn)行在Java EE(Java Platform, EnterpriseEdition)平臺上,這些關(guān)鍵應(yīng)用往往要求很高的可用性和可伸縮性。Java EE集群技術(shù)是Java EE產(chǎn)品提供商用于提高Java EE產(chǎn)品可用性和可伸縮性,以及實現(xiàn)負(fù)載均衡最常用的方式。
圖I描述了現(xiàn)有Java EE集群系統(tǒng)100??蛻舳?01發(fā)出應(yīng)用請求102,路由器和負(fù)載均衡器103基于集群列表104將應(yīng)用請求102發(fā)送給運(yùn)行在節(jié)點群107上的應(yīng)用集群109。節(jié)點群107包括數(shù)個節(jié)點108,節(jié)點108可以是物理主機(jī),也可以是虛擬主機(jī)。每個節(jié)點108通常運(yùn)行一個Java EE應(yīng)用服務(wù)器,每個應(yīng)用服務(wù)器部署多個Java EE應(yīng)用110,多個節(jié)點中的同一應(yīng)用構(gòu)成一個應(yīng)用集群109。在圖I中,存在兩個應(yīng)用集群,其中一個應(yīng)用集群109中的應(yīng)用為“b”,另一個應(yīng)用集群中的應(yīng)用為“a”。在配置上述應(yīng)用集群109時,首先通過應(yīng)用部署單元106選擇目標(biāo)節(jié)點108,并在目標(biāo)節(jié)點108上部署應(yīng)用110,然后通過集群配置模塊105配置集群列表104,集群列表104中的信息包括應(yīng)用集群109的節(jié)點列表和節(jié)點負(fù)載因子。如果在應(yīng)用集群109中增加或者減少一個節(jié)點108,則需要通過集群配置模塊105手動修改應(yīng)用集群109的節(jié)點列表。由于配置繁瑣,系統(tǒng)100不適用應(yīng)用集群109規(guī)模較大時的環(huán)境,而且不支持應(yīng)用集群的動態(tài)伸縮。然而,應(yīng)用的負(fù)載通常是動態(tài)變化的,具有一定的突發(fā)性。系統(tǒng)100若按照負(fù)載峰值配置應(yīng)用集群,會造成大量資源的浪費;若按照負(fù)載均值配置應(yīng)用集群,則在負(fù)載高峰期會造成服務(wù)質(zhì)量的下降和用戶的流失。此外,在系統(tǒng)100中,應(yīng)用請求根據(jù)預(yù)設(shè)的靜態(tài)負(fù)載因子選擇目標(biāo)節(jié)點,不能根據(jù)節(jié)點的實際負(fù)載情況來分發(fā)應(yīng)用請求。
發(fā)明內(nèi)容
(一 )要解決的技術(shù)問題本發(fā)明要解決的技術(shù)問題是如何提供一種自動配置Java EE應(yīng)用集群的裝置和方法,使得在部署新節(jié)點、節(jié)點失效或者在節(jié)點上部署應(yīng)用之后,系統(tǒng)可以自動地完成應(yīng)用集群的重新配置,并實現(xiàn)自適應(yīng)的動態(tài)負(fù)載均衡。( 二 )技術(shù)方案為了解決上述技術(shù)問題,本發(fā)明提供了一種自動配置Java EE應(yīng)用集群的裝置,包括多個節(jié)點的節(jié)點群、運(yùn)行在節(jié)點群上的應(yīng)用集群,每個節(jié)點上運(yùn)行一個Java EE應(yīng)用服務(wù)器,每個應(yīng)用服務(wù)器上部署多個Java EE應(yīng)用,所述裝置還包括存儲單元、代理單元、集群自動管理單元、負(fù)載均衡單元、應(yīng)用部署單元;存儲單元用于存儲節(jié)點列表、節(jié)點的負(fù)載因子、應(yīng)用集群及其位置的列表;
代理單元用于監(jiān)控Java EE應(yīng)用服務(wù)器及其內(nèi)部容器的狀態(tài),一旦發(fā)現(xiàn)狀態(tài)發(fā)生改變則發(fā)送信息修改消息給集群自動管理單元,并周期性地計算節(jié)點的負(fù)載因子,并發(fā)送信息修改消息給集群自動管理單元;集群自動管理單元用于維護(hù)存儲單元中所存儲的信息,當(dāng)接收到代理單元的消息,根據(jù)所述信息修改消息對存儲單元中變化的信息做相應(yīng)的修改;負(fù)載均衡單元用于接收客戶端發(fā)送的應(yīng)用請求,并根據(jù)從存儲單元獲得的應(yīng)用集群的位置列表及該應(yīng)用集群所在節(jié)點的負(fù)載因子選擇目標(biāo)節(jié)點,并將應(yīng)用請求轉(zhuǎn)發(fā)給目標(biāo)節(jié)點;應(yīng)用部署單元提供應(yīng)用部署功能,用于對應(yīng)用進(jìn)行部署,在部署應(yīng)用時從存儲單元獲取可選擇的節(jié)點列表。優(yōu)選地,所述節(jié)點是物理主機(jī)或虛擬主機(jī)。 本發(fā)明還提供了一種利用所述的裝置自動配置Java EE應(yīng)用集群的方法,包含以下步驟SI、代理單元實時監(jiān)控Java EE應(yīng)用服務(wù)器及其內(nèi)部容器的狀態(tài),一旦發(fā)現(xiàn)狀態(tài)發(fā)生改變則發(fā)送信息修改消息給集群自動管理單元;S2、集群自動管理單元收到所述信息修改消息后自動更新存儲單元中存儲的信息;S3、負(fù)載均衡單元接收到客戶端發(fā)送的應(yīng)用請求后,根據(jù)從存儲單元獲得的應(yīng)用集群列表及其節(jié)點的負(fù)載因子選擇目標(biāo)節(jié)點,并將應(yīng)用請求轉(zhuǎn)發(fā)給目標(biāo)節(jié)點。優(yōu)選地,在步驟SI之前還包括步驟S0、在節(jié)點剛啟動時,節(jié)點的代理單元將用于獲取節(jié)點所在主機(jī)地址和端口的消息以組播的方式發(fā)送給集群自動管理單元,集群自動管理單元收到組播消息后將該節(jié)點的主機(jī)地址和端口發(fā)送給節(jié)點的代理單元,從而實現(xiàn)節(jié)點的自動發(fā)現(xiàn)。優(yōu)選地,所述監(jiān)控Java EE應(yīng)用服務(wù)器及其內(nèi)部容器的狀態(tài)發(fā)生變化包括節(jié)點地址發(fā)生變化、Java EE應(yīng)用服務(wù)器啟動或暫停、應(yīng)用的部署和解部署。優(yōu)選地,步驟SI與S2之間還包括步驟SI’ 代理單元在Java EE應(yīng)用服務(wù)器端周期性地根據(jù)默認(rèn)或者自定義的負(fù)載度量標(biāo)準(zhǔn)計算節(jié)點的負(fù)載因子的步驟。優(yōu)選地,在步驟SI,與S2之間還包括步驟SI” 代理單元向集群自動管理單元發(fā)送表明節(jié)點處于活動狀態(tài)的心跳消息。優(yōu)選地,在步驟S2與S3之間還包括步驟S2’ 集群自動管理單元根據(jù)預(yù)設(shè)的超時時間和各節(jié)點最近一次收到的心跳消息判定節(jié)點是否失效。在判定節(jié)點是否失效之后,集群自動管理單元主動發(fā)送應(yīng)用請求給代理單元,以確認(rèn)節(jié)點是否失效。(三)有益效果本發(fā)明的技術(shù)效果主要為(I)通過實現(xiàn)自動發(fā)現(xiàn)Java EE應(yīng)用服務(wù)器節(jié)點和對節(jié)點狀態(tài)的實時監(jiān)控來獲取節(jié)點和應(yīng)用狀態(tài)的變化信息,然后根據(jù)變化信息相應(yīng)地修改應(yīng)用集群的配置,從而能夠隨著應(yīng)用部署的變化而自動配置Java EE應(yīng)用集群。⑵提供了一個在Java EE應(yīng)用服務(wù)器端根據(jù)負(fù)載和資源的情況計算負(fù)載因子從而分發(fā)應(yīng)用請求的動態(tài)負(fù)載均衡方法,與現(xiàn)有技術(shù)中采用靜態(tài)的負(fù)載因子的方法相比,所能達(dá)到的負(fù)載均衡效果更優(yōu)。
圖I為根據(jù)現(xiàn)有技術(shù)實現(xiàn)的集群系統(tǒng)示意圖;圖2根據(jù)本發(fā)明的實施例實現(xiàn)的能夠?qū)崿F(xiàn)動態(tài)配置的集群系統(tǒng)示意圖;圖3是本發(fā)明的方法流程圖。
具體實施例方式下面結(jié)合附圖和實施例,對本發(fā)明的具體實施方式
作進(jìn)一步詳細(xì)說明。以下實施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖對本發(fā)明作進(jìn)一步·的詳細(xì)描述。圖2描述了根據(jù)本發(fā)明實施例的系統(tǒng)200,其中根據(jù)應(yīng)用集群209在主機(jī)群206中的位置及其節(jié)點208的負(fù)載因子,使用負(fù)載均衡單元203從多個客戶端201向應(yīng)用集群209傳送應(yīng)用請求202。特別地,代理單元211 (圖2中簡寫為“代理”)實時監(jiān)控節(jié)點208的狀態(tài)和周期性計算負(fù)載因子,在發(fā)生變化時及時通知集群自動管理單元213,集群自動管理單元213自動更新存儲單元205中的集群列表、節(jié)點位置及負(fù)載因子204和節(jié)點列表212。在圖2中,節(jié)點4是剛啟動的節(jié)點,其應(yīng)用服務(wù)器上已部署應(yīng)用“b”之后,用戶通過應(yīng)用部署單元207在節(jié)點3和節(jié)點4上部署了應(yīng)用“C”,對節(jié)點3上的應(yīng)用“a”進(jìn)行解部署。當(dāng)節(jié)點4啟動成功時,代理單元211發(fā)送包含用于獲取主機(jī)地址和端口的組播消息,集群自動管理單元213收到組播消息后將自己的地址和端口告訴節(jié)點4。在獲得集群自動管理單元213的主機(jī)地址和端口后,代理單元211將節(jié)點4上已部署的應(yīng)用“b”發(fā)送給集群自動管理單元213。集群自動管理單元213收到更新消息后更新存儲單元205中的集群列表、節(jié)點位置及負(fù)載因子204和節(jié)點列表212 :在節(jié)點列表中增加節(jié)點4,在應(yīng)用集群209的列表中增加節(jié)點4、節(jié)點4的地址和負(fù)載因子。用戶通過應(yīng)用部署單元207選擇在節(jié)點3和節(jié)點4上部署應(yīng)用“C”。當(dāng)節(jié)點3和節(jié)點4的代理單元211發(fā)現(xiàn)節(jié)點上部署了應(yīng)用“C”,分別將操作類型“部署應(yīng)用”和部署的應(yīng)用“c”通知集群自動管理單元213。集群自動管理單元213收到更新消息后,確定節(jié)點
3和4已經(jīng)在節(jié)點列表212中,僅需更新存儲單元205中的集群列表、節(jié)點位置及負(fù)載因子204 :增加應(yīng)用c (210)組成的應(yīng)用集群,在應(yīng)用集群的列表中增加節(jié)點3和節(jié)點4。此后,用戶通過應(yīng)用部署單元207在對節(jié)點3上的應(yīng)用“a”進(jìn)行解部署。當(dāng)節(jié)點3的代理單元211發(fā)現(xiàn)節(jié)點上的應(yīng)用“a”被解部署時,將操作類型“解部署應(yīng)用”和被解部署的應(yīng)用“a”發(fā)送給集群自動管理單元213。集群自動管理單元213收到更新消息后,更新存儲單元205中的集群列表、節(jié)點位置及負(fù)載因子204 :在應(yīng)用a組成的應(yīng)用集群的列表中刪除節(jié)點3。本發(fā)明還提供了一種利用所述的裝置自動配置Java EE應(yīng)用集群的方法,包含以下步驟SI、代理單元實時監(jiān)控Java EE應(yīng)用服務(wù)器及其內(nèi)部容器的狀態(tài),一旦發(fā)現(xiàn)狀態(tài)發(fā)生改變則發(fā)送信息修改消息給集群自動管理單元;S2、集群自動管理單元收到所述信息修改消息后自動更新存儲單元中存儲的信息;S3、負(fù)載均衡單元接收到客戶端發(fā)送的應(yīng)用請求后,根據(jù)從存儲單元獲得的應(yīng)用集群列表及其節(jié)點的負(fù)載因子選擇目標(biāo)節(jié)點,并將應(yīng)用請求轉(zhuǎn)發(fā)給目標(biāo)節(jié)點。
優(yōu)選地,在步驟SI之前還包括步驟S0、在節(jié)點剛啟動時,節(jié)點的代理單元將用于獲取節(jié)點所在主機(jī)地址和端口的消息以組播的方式發(fā)送給集群自動管理單元,集群自動管理單元收到組播消息后將該節(jié)點的主機(jī)地址和端口發(fā)送給節(jié)點的代理單元,從而實現(xiàn)節(jié)點的自動發(fā)現(xiàn)。優(yōu)選地,所述監(jiān)控Java EE應(yīng)用服務(wù)器及其內(nèi)部容器的狀態(tài)發(fā)生變化包括節(jié)點地址發(fā)生變化、Java EE應(yīng)用服務(wù)器啟動或暫停、應(yīng)用的部署和解部署。優(yōu)選地,步驟SI與S2之間還包括步驟SI’ 代理單元在Java EE應(yīng)用服務(wù)器端周期性地根據(jù)默認(rèn)或者自定義的負(fù)載度量標(biāo)準(zhǔn)計算節(jié)點的負(fù)載因子的步驟。優(yōu)選地,在步驟SI,與S2之間還包括步驟SI” 代理單元向集群自動管理單元發(fā)送表明節(jié)點處于活動狀態(tài)的心跳消息。優(yōu)選地,在步驟S2與S3之間還包括步驟S2’ 集群自動管理單元根據(jù)預(yù)設(shè)的超時時間和各節(jié)點最近一次收到的心跳消息判定節(jié)點是否失效。在判定節(jié)點是否失效之后,集群自動管理單元主動發(fā)送應(yīng)用請求給代理單元,以確認(rèn)節(jié)點是否失效。由以上實施例可以看出,本發(fā)明主要解決Java EE應(yīng)用集群不能隨著應(yīng)用部署的變化而自動配置的問題。技術(shù)方案的要點為通過節(jié)點自動發(fā)現(xiàn)和對節(jié)點狀態(tài)的實時監(jiān)控來獲取節(jié)點和應(yīng)用狀態(tài)的變化信息,然后根據(jù)變化信息相應(yīng)地修改應(yīng)用集群的配置;根據(jù)Java EE應(yīng)用服務(wù)器端基于負(fù)載和資源的情況計算獲得的動態(tài)負(fù)載因子分發(fā)應(yīng)用請求。本發(fā)明提供的裝置和方法可以實現(xiàn)Java EE應(yīng)用動態(tài)集群和自適應(yīng)的動態(tài)負(fù)載均衡,從而提高Java EE應(yīng)用的可用性和可伸縮性。本發(fā)明可用于一般的Java EE應(yīng)用環(huán)境。特別地,在云計算環(huán)境中,結(jié)合云計算可伸縮的基礎(chǔ)設(shè)施架構(gòu)以及基于應(yīng)用負(fù)載的資源調(diào)整策略,可以實現(xiàn)Java EE應(yīng)用自動適應(yīng)業(yè)務(wù)需求的變化。以上實施方式僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。
權(quán)利要求
1.一種自動配置Java EE應(yīng)用集群的裝置,包括多個節(jié)點的節(jié)點群、運(yùn)行在節(jié)點群上的應(yīng)用集群,每個節(jié)點上運(yùn)行一個Java EE應(yīng)用服務(wù)器,每個應(yīng)用服務(wù)器上部署多個JavaEE應(yīng)用,其特征在于,所述裝置還包括存儲單元、代理單元、集群自動管理單元、負(fù)載均衡單元、應(yīng)用部署單元; 存儲單元用于存儲節(jié)點列表、節(jié)點的負(fù)載因子、應(yīng)用集群及其位置的列表; 代理單元用于監(jiān)控Java EE應(yīng)用服務(wù)器及其內(nèi)部容器的狀態(tài),一旦發(fā)現(xiàn)狀態(tài)發(fā)生改變則發(fā)送信息修改消息給集群自動管理單元,并周期性地計算節(jié)點的負(fù)載因子,并發(fā)送信息修改消息給集群自動管理單元; 集群自動管理單元用于維護(hù)存儲單元中所存儲的信息,當(dāng)接收到代理單元的消息,根據(jù)所述信息修改消息對存儲單元中變化的信息做相應(yīng)的修改; 負(fù)載均衡單元用于接收應(yīng)用請求,并根據(jù)從存儲單元獲得的應(yīng)用集群的位置列表及該應(yīng)用集群所在節(jié)點的負(fù)載因子選擇目標(biāo)節(jié)點,并將應(yīng)用請求轉(zhuǎn)發(fā)給目標(biāo)節(jié)點; 應(yīng)用部署單元提供應(yīng)用部署功能,用于對應(yīng)用進(jìn)行部署,在部署應(yīng)用時從存儲單元獲取可選擇的節(jié)點列表。
2.如權(quán)利要求I所述的裝置,其特征在于,所述節(jié)點是物理主機(jī)或虛擬主機(jī)。
3.如權(quán)利要求I所述的裝置,其特征在于,所述JavaEE應(yīng)用服務(wù)器及其內(nèi)部容器的狀態(tài)發(fā)生變化包括節(jié)點地址發(fā)生變化、Java EE應(yīng)用服務(wù)器啟動或暫停、應(yīng)用的部署和解部署。
4.一種利用權(quán)利要求I或2或3所述的裝置自動配置Java EE應(yīng)用集群的方法,其特征在于,包含以下步驟 51、代理單元實時監(jiān)控JavaEE應(yīng)用服務(wù)器及其內(nèi)部容器的狀態(tài),一旦發(fā)現(xiàn)狀態(tài)發(fā)生改變則發(fā)送信息修改消息給集群自動管理單元; 52、集群自動管理單元收到所述信息修改消息后自動更新存儲單元中存儲的信息; 53、負(fù)載均衡單元接收到客戶端發(fā)送的應(yīng)用請求后,根據(jù)從存儲單元獲得的應(yīng)用集群列表及其節(jié)點的負(fù)載因子選擇目標(biāo)節(jié)點,并將應(yīng)用請求轉(zhuǎn)發(fā)給目標(biāo)節(jié)點。
5.如權(quán)利要求4所述的方法,其特征在于,在步驟SI之前還包括步驟SO、在節(jié)點剛啟動時,節(jié)點的代理單元將用于獲取節(jié)點所在主機(jī)地址和端口的消息以組播的方式發(fā)送給集群自動管理單元,集群自動管理單元收到組播消息后將該節(jié)點的主機(jī)地址和端口發(fā)送給節(jié)點的代理單元,從而實現(xiàn)節(jié)點的自動發(fā)現(xiàn)。
6.如權(quán)利要求4所述的方法,其特征在于,所述監(jiān)控JavaEE應(yīng)用服務(wù)器及其內(nèi)部容器的狀態(tài)發(fā)生變化包括節(jié)點地址發(fā)生變化、Java EE應(yīng)用服務(wù)器啟動或暫停、應(yīng)用的部署和解部署。
7.如權(quán)利要求4所述的方法,其特征在于,步驟SI與S2之間還包括步驟SI’代理單元在Java EE應(yīng)用服務(wù)器端周期性地根據(jù)默認(rèn)或者自定義的負(fù)載度量標(biāo)準(zhǔn)計算節(jié)點的負(fù)載因子的步驟。
8.如權(quán)利要求7所述的方法,其特征在于,在步驟SI’與S2之間還包括步驟SI”:代理單元向集群自動管理單元發(fā)送表明節(jié)點處于活動狀態(tài)的心跳消息。
9.如權(quán)利要求8所述的方法,其特征在于,在步驟S2與S3之間還包括步驟S2’集群自動管理單元根據(jù)預(yù)設(shè)的超時時間和各節(jié)點最近一次收到的心跳消息判定節(jié)點是否失效。
10.如權(quán)利要求9所述的方法,其特征在于,在判定節(jié)點是否失效之后,集群自動管理單元主動發(fā)送應(yīng)用請求給代理單元,以確認(rèn)節(jié)點是否失效。
全文摘要
本發(fā)明公開了一種自動配置Java EE應(yīng)用集群的裝置和方法,屬于Java EE應(yīng)用技術(shù)領(lǐng)域。主要解決Java EE應(yīng)用集群不能隨著應(yīng)用部署的變化而自動配置的問題。技術(shù)方案的要點為通過節(jié)點自動發(fā)現(xiàn)和節(jié)點狀態(tài)的實時監(jiān)控獲取節(jié)點和應(yīng)用狀態(tài)的變化信息,然后根據(jù)變化信息相應(yīng)地修改應(yīng)用集群的配置;根據(jù)Java EE應(yīng)用服務(wù)器端基于負(fù)載和資源的情況計算獲得的動態(tài)負(fù)載因子分發(fā)應(yīng)用請求。本發(fā)明提供的裝置和方法可以實現(xiàn)Java EE應(yīng)用動態(tài)集群和自適應(yīng)的動態(tài)負(fù)載均衡,從而提高Java EE應(yīng)用的可用性和可伸縮性。
文檔編號H04L12/18GK102724104SQ201110078200
公開日2012年10月10日 申請日期2011年3月30日 優(yōu)先權(quán)日2011年3月30日
發(fā)明者李明, 李春青, 程銀波 申請人:北京東方通科技股份有限公司