專利名稱:一種集群應用服務器的分布式熱部署方法
技術領域:
本發明涉及通過借助一種底層通信平臺來實現集群應用服務器環境下EJB的分布式熱部 署,主要是一種集群應用服務器的分布式熱部署方法。
背景技術:
術語"應用服務器"是指位于應用軟件及操作系統、數據庫之間滿足一定標準的一系列 軟件環境、服務及工具的集合。集群應用服務器是指各個獨立的應用服務器,通過一種底層 通信平臺相互連接,然而對外表現為單一的系統。比如,當我們在瀏覽網頁的時候,在地址 攔里輸入域名,瀏覽器就會向對應的服務器發送請求,在集群應用服務器情況下,該請求可 能被集群中的任何一臺應用服務器處理,并返回信息。然而對于我們而言,只感覺到在跟一 臺服務器進行交互。
EJB是Java中用于開發企業級應用的技術標準,他定義了一個用于開發和發布可重用的 服務器端組件的模型。EJB的部署是指將該EJB綁定到應用服務器,從而在接收客戶端請求 時,可以調用該EJB來處理請求,并返回結果。EJB的分布式熱部署是指,當一個EJB在集 群應用服務器中的任意一個節點上部署時,該EJB同時被部署到集群中的其他應用服務器上。 本項技術主要提出一種集群應用服務器下EJB分布式熱部署的方法。 在集群應用服務器下,如果部署一個EJB需要把EJB手動部署到每一臺服務器上的話, 不但過程繁瑣,而且容易出錯,可能由于疏忽,某臺應用服務器并沒有部署或卸載相應的EJB, 從而造成集群應用服務器的不一致現象。
分布式熱部署就是為了解決這一情況而設計。當一個新節點加入集群時,它會去下載集 群中其他節點上己經部署的EJB,并在本地部署。當一個EJB在集群中的一個節點上部署時, 其他節點會自動下載該EJB,然后在本地部署;同樣,當一個EJB在一個節點上被卸載時, 其他節點也會自動卸載該文件。
發明內容
本發明要解決上述技術所存在的缺陷,提供一種集群應用服務器的分布式熱部署方法。
本發明解決其技術問題所采用的技術方案
這種集群應用服務器的分布式熱部署方法,當一個新的應用服務器節點加入到集群中時, 它會自動去獲取集群中每個節點特定目錄下的所有EJB文件,然后在本地部署。當在本地部 署一個EJB時,先將該EJB在本地部署,再在集群中廣播,通知集群中的其他節點下載該文
件。具體過程如下
當有一個新的應用服務器節點加入集群時-
1. 該節點首先通過底層通信平臺獲得集群中其他節點上的所有文件的文件名和文件版本 信息,將其存放到一張表中。
2. 逐個取出表中的文件信息,和本地已部署文件信息表進行對照,如果在本地已部署文 件信息表中沒有找到該文件,或是能夠找到,但是文件的版本信息比該文件的版本信息要早, 則將集群中其他節點上該文件的信息(文件內容和版本信息)獲取過來,存放到一張臨時表 中。
3. 逐個取出臨時表中的文件信息,再次查找本地的己部署文件信息表,如果不能找到,
或是能夠找到,但是其文件版本信息比該文件的版本信息要早,則將該文件下載到本地,再
進行部署,并將文件名添加到遠程已部署文件信息表中;否則,不做任何操作。 當有一個新的EJB在某個應用服務器上部署時
1. 該節點首先對新EJB在本地進行部署。
2. 在部署完新EJB后,將該文件名和文件版本信息添加到本地的已部署文件信息表中。 接著,在遠程巳部署文件信息表中査找該文件,如果能夠找到該文件,說明該文件已經在其 他節點上部署,則不用再在集群中廣播;否則,通過底層通信平臺通知集群中的其他節點下 載該文件。
3. 其他節點收到消息后,首先在本地的已部署文件信息表中查找該文件,如果不能找到, 或是能夠找到,但是其文件版本信息比接收到的文件版本信息要早,則將該文件下載到本地, 再進行部署,并將文件名添加到遠程已部署文件信息表中;否則,不做任何操作。
當有一個EJB在某個應用服務器上被卸載時-
1. 該節點首先將該EJB在本地進行卸載。
2. 在卸載完該EJB后,將本地的已部署文件信息表中的該文件信息刪除。接著,在遠程 已卸載文件信息表中查找該文件,如果沒有找到,說明集群中其他節點上還沒有卸載該文件,
再通過底層通信平臺通知集群中的其他節點卸載該文件。
3.其他節點收到消息后,首先判斷該文件是否存在,如果不存在,則直接返回,不做任 何操作。否則,將該文件名添加到遠程已卸載文件信息表中,并將該文件刪除。
本發明有益的效果是通過以上的技術實現,能有效的實現EJB在一臺機子上加載,而 能夠在集群范圍內部署。并且能夠根據EJB的版本信息實現動態更新。同樣,當一個EJB在 一個節點上被卸載時,能夠在集群范圍內實現反部署。同將EJB在集群中的每一個節點上進 行逐個部署的情況現比,不但方便、高效,而且不會出現各個節點部署不一致的情況。
圖1為新節點獲得其他節點上的所有文件信息的示意圖; 圖2為新節點獲得其他節點上a. jar文件的內容和版本信息的示意圖; 圖3為節點4部署新的jar文件并通知集群中的其他節點示意圖; 圖4為節點4卸載jar文件并通知其他節點卸載相應的文件示意圖。
具體實施例方式
下面結合附圖和實施例對本發明作進一步介紹
現在我們采用錢塘應用服務器,用Jboss (應用服務器產商)開發的開源底層通信平臺 jgro叩s來進行具體說明。所有EJB文件被放置在distributed目錄下。 圖1表示新節點加入的情況。
1. 當在新節點上啟動錢塘應用服務器時,該節點首先通過jgro叩s獲得節點l,節點2, 節點3上的所有文件的信息(包括文件名和文件版本信息),將其存放到一張tmp表中,tmp 表結構如圖l所示-
其中distributed為需要進行分布式熱部署的EJB文件存放的目錄,a. jar, b. jar分別對 應兩個EJB文件。
2. 取節點1中的文件(如distributed\a. jar),査找本地localD印loyed表,如果文件 不能找到,或是能夠找到,但是文件的版本信息比表中的版本信息要早,則把所有節點上該 文件的信息獲取過來,存放到一張list表中,list表結構如圖2所示。其中文件內容以字 節的形式存儲到fileContent[]。
3. 取節點l中的文件,再次查找本地的localD印loyed表,如果不能找到,或是能夠找 到,但是其文件版本信息比接收到的版本信息要早,則將該文件下載到本地,再進行部署; 否則,不做任何操作。
4.重復步驟2, 3,直到遍歷完整張表。
圖3表示有一個新的EJB在節點4上部署的情況。
1. 節點4首先對該文件進行部署。
2. 在部署完新文件后,將該文件名和文件版本信息添加到本地的localD印loyed表。接 著,査找remoteD印loyed表,如果表中已經有該文件,說明該文件已經在節點1, 2, 3上部 署,則不用再通知;否則,通過jgroups通知節點1, 2, 3下載改文件。
3. 當節點l, 2, 3到消息后,首先査找本地的localD印loyed表,如果不能找到,或是 能夠找到,但是其文件版本信息比接收到的版本信息要早,則將該文件下載到本地,再進行 部署,并將文件名添加到remoteD印loyed表;否則,不做任何操作。
其中distributed為需要進行分布式熱部署的EJB文件所存放的目錄。a. jar a, b. jar, c. jar分別對應三個EJB文件。
圖4表示某個EJB在節點4上被卸載的情況。
1. 節點4首先將該EJB在本地進行卸載。
2. 在卸載完該EJB后,將localD印loyed表中的b. jar文件信息刪除。接著,査找 remoteUnd印loyed表,如果沒有找到,說明節點1, 2, 3還沒有卸載該文件,于是通過jgroups 通知節點l, 2, 3卸載該文件。
3. 當節點l, 2, 3收到消息后,首先判斷b. jar文件是否存在,如果不存在,則直接返 回,不做任何操作。否則,將文件名添加到remoteUnd印loyed表中,并將該文件刪除。
上述實施例用來解釋說明本發明,而不是對本發明進行限制,在本發明的精神和權利要 求的保護范圍內,對本發明作出的任何修改和改變,都落入本發明的保護范圍。
權利要求
1、一種集群應用服務器的分布式熱部署方法,其特征在于當一個新的應用服務器節點加入到集群中時,它會去獲取集群中每個節點設定目錄下的所有EJB文件,然后在本地部署,當在本地部署一個EJB時,先將該EJB在本地部署,再在集群中廣播,通知集群中的其他節點下載該文件。
2、 根據權利要求1所述的集群應用服務器的分布式熱部署方法,其特征在于當有一 個新的應用服務器節點加入集群時(1) .該節點首先通過底層通信平臺獲得集群中其他節點上的所有文件的文件名和文件 版本信息,將其存放到一張表中;(2) .逐個取出表中的文件信息,和本地己部署文件信息表進行對照,如果在本地已部 署文件信息表中沒有找到該文件,或是能夠找到,但是文件的版本信息比該文件的版本信息 要早,則將集群中其他節點上該文件的信息獲取過來,存放到一張臨時表中;(3) .逐個取出臨時表中的文件信息,再次査找本地的已部署文件信息表,如果不能找 到,或是能夠找到,但是其文件版本信息比該文件的版本信息要早,則將該文件下載到本地, 再進行部署,并將文件名添加到遠程已部署文件信息表中;否則,不做任何操作。
3、 根據權利要求1所述的集群應用服務器的分布式熱部署方法,其特征在于當有一個 新的EJB在某個應用服務器上部署時(1) .該節點首先對新EJB在本地進行部署;(2) .在部署完新EJB后,將該文件名和文件版本信息添加到本地的己部署文件信息表 中。接著,在遠程已部署文件信息表中査找該文件,如果能夠找到該文件,說明該文件已經 在其他節點上部署,則不用再在集群中廣播;否則,通過底層通信平臺通知集群中的其他節 點下載該文件;(3) .其他節點收到消息后,首先在本地的巳部署文件信息表中查找該文件,如果不能 找到,或是能夠找到,但是其文件版本信息比接收到的文件版本信息要早,則將該文件下載 到本地,再進行部署,并將文件名添加到遠程已部署文件信息表中;否則,不做任何操作。
4、根據權利要求1所述的集群應用服務器的分布式熱部署方法,其特征在于當有一個 EJB在某個應用服務器上被卸載時(1) .該節點首先將該EJB在本地進行卸載;(2) .在卸載完該EJB后,將本地的巳部署文件信息表中的該文件信息刪除。接著,在遠程已卸載文件信息表中查找該文件,如果沒有找到,說明集群中其他節點上還沒有卸載該文件,再通過底層通信平臺通知集群中的其他節點卸載該文件;(3) .其他節點收到消息后,首先判斷該文件是否存在,如果不存在,則直接返回,不 做任何操作。否則,將該文件名添加到遠程已卸載文件信息表中,并將該文件刪除。
全文摘要
本發明涉及一種集群應用服務器的分布式熱部署方法,當一個新的應用服務器節點加入到集群中時,它會自動去獲取集群中每個節點特定目錄下的所有EJB文件,然后在本地部署。當在本地部署一個EJB時,先將該EJB在本地部署,再在集群中廣播,通知集群中的其他節點下載該文件。本發明有益的效果是通過以上的技術實現,能有效的實現EJB在一臺機子上加載,而能夠在集群范圍內部署。并且能夠根據EJB的版本信息實現動態更新。同樣,當一個EJB在一個節點上被卸載時,能夠在集群范圍內實現反部署。同將EJB在集群中的每一個節點上進行逐個部署的情況現比,不但方便、高效,而且不會出現各個節點部署不一致的情況。
文檔編號H04L12/24GK101183975SQ20071015670
公開日2008年5月21日 申請日期2007年12月4日 優先權日2007年12月4日
發明者健 吳, 吳朝暉, 尹建偉, 武 李, 瑩 李, 鄧水光 申請人:浙江大學