摘要:通過對Jini技術和Web服務器集群的工作原理的介紹,分析了Jini構造Web服務器集群的可行性和具有的優勢;提出了基于Jini技術構建Web服務器集群的實現模型,并給出了在構建Web服務器集群的過程中實現高可用性、負載平衡的解決方案。
關鍵詞:Jini;Web服務器集群;高可用性;負載平衡
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)25-1571-03
Research and Design of a Web Server Cluster System with Jini-based Technology
LI Zi-long
(Xuzhou Institute of Technology, Xuzhou 221008, China)
Abstract: Through introducing the mechanisms of Jini and the web server cluster system, Analysed the possibility and advantages of implementing the web server cluster system in the field of Jini; Gived a view that constructed an web server cluster system with jini-based technology; gives a solution of high availability, and load balancing for web server cluster system.
Key words: Jini; web server cluster system; high availability; load balancing
1 引言
Web服務器集群系統是指2臺或2臺以上Web服務器聯合向客戶提供Web服務的一種計算機系統。它可以降低服務器負荷,提高系統性能。近年來,針對Web服務器集群系統的設計和實現,國內外的許多公司和學術機構給出了不同的解決方案。但這些解決方案的實現大都比較復雜,維護麻煩,不利于Web服務器集群的應用。
基于此,提出采用Jini來構造Web服務器集群系統。Jini 是一種以動態分布系統為基礎的體系架構,可以獨立于平臺,它為對象的網絡連接、信息共享和互操作方面,確立了一套基本規則。Jini 提供了一種使網絡上的服務可以彼此尋找并互相利用的基本結構,它具有動態性、可伸縮性和很強的自修復能力。可以作為構造Web服務器集群系統的支撐技術。
2 Jini技術構建Web服務器集群
2.1 Jini技術
Jini技術是SUN在Java和RMI基礎之上推出的新的分布式計算系統。Jini 體系結構最重要的概念是服務,服務是指代網絡中可被其他Jini參與者所使用的實體。Jini 提供了 5 個基本概念:
1) 發現(Discovery):是用于尋找網絡中群體并加入它們的過程,是 Jini 完成自發創建群體功能的部分。
2) 查找(Lookup):通過查找、發現和確定服務,同時還起到連接系統和系統使用者的作用。
3) 租借(Leasing):在Jini 環境中,對服務的訪問基于租借。它保證了一個群體在某些關鍵服務失敗的情況下,一段時間之后可以恢復。
4) 遠程事件(Remote Event):是Jini 服務彼此通報狀態的變化所采用的范型。一個對象允許其它對象注冊對該對象感興趣的事件,并能收到該事件發生的通知。
5) 事務(Transaction):是Jini 使包含多個服務的計算到達一個“安全”狀態的機制。Jini 事務接口提供兩階段提交所需的服務協議。
在Jini 系統中,一個實體首先要通過發現/加入協議加入到系統之中,定位一個Jini 技術的查找服務。它可以作為能為其他實體利用的服務。在利用其它服務時,它可以在查找服務中下載一個可被用來與選定的服務進行交互的Java 對象,通過它建立與服務的直接聯系,如圖1 所示。
2.2 Web服務器集群的工作模型
在一般的Web服務器集群中,存在一個實體稱為“連接調度分派器”,這個連接調度分派器主要用于處理到達集群的客戶端服務請求。Web服務器集群中連接調度分派器配置了一個特殊的網絡地址,即所謂的“集群網絡地址”,這就是說整個集群采用這個集群網絡地址作為唯一的網絡地址,其呈現給客戶端為單一主機服務。客戶端發來頁面請求,此請求先到達連接調度分派器。由連接調度分派器按照一定的策略轉發給Web服務器集群中的一個Web服務器。最后,由相應的Web服務器與客戶端進行交互完成處理請求,把結果返回給用戶。Web服務器集群的體系結構如圖5所示。
■
圖2 Web服務器集群的體系結構
一個Web服務器集群主要具有的基本功能有:可擴展性、高可用性和負載均衡。
1) 集群的性能不限于單一的Web服務器,新的服務器可以動態地加入到集群 ,從而增強集群的性能。
2) 在集群中每臺服務器都具備等價的地位,都可以單獨對外提供服務,而無須其他服務器的輔助。如果一個Web服務器出現故障了,系統會對客戶端屏蔽掉故障的服務器,用戶將自動訪問運行正常的服務器。
3) 負載均衡能把瀏覽任務均衡地分布到集群中的每個Web服務器,使得每個Web服務器上的負荷大致相等。從而以較低成本消除系統瓶頸,增加了吞吐量,加強系統數據處理能力,提高系統的靈活性和可用性。
2.3 基于Jini技術的Web服務器集群系統結構
Jini 的很多概念非常適合用來構建Web服務器集群。Jini具有的“即插即用”功能和“租約”機制能使得構建的集群系統具有高可用性,而Jini的“聯盟”機制使得集群系統的組織更靈活,管理的手段更多。
圖3是基于Jini技術的Web服務器集群的系統結構模型,該集群系統中的一個的Web服務器作為“連接調度分派器”,它首先接受到達的Http請求并轉發。其他的Web服務器在集群系統中接收“連接調度分派器”轉發過來的請求,處理完請求后把結果返回給客戶。
“連接調度分派器” 是根據集群中每個Web服務器的負載情況按照一定的調度策略轉發請求的,把它交給負載最小的那個Web服務器來處理這個客戶端瀏覽器發來的信息請求。這里,將每個Web服務器的負載信息加以包裝,使其成為一個Jini服務。系統中作為 “連接調度分派器”的那個Web服務器是Jini服務使用者,其他的Web服務器是Jini服務提供者,他們每隔一定的時間段向查找服務注冊自己的服務。
在這里,用來組成集群系統的Web服務器可能不能運行Java,因此就不能直接參與到Jini網絡中。針對這種情況,采用Jini的代理體系結構技術,創建一個代理來代表Web服務器,由代理完成參與到Jini服務機制的任務當中去。
■
圖3 基于Jini技術的Web服務器集群的體系結構
3 關鍵技術的實現
3.1 負載均衡調度算法的設計
Web服務器集群系統中,負載均衡調度策略的效果如何決定于兩個關鍵因素: 負載均衡的調度技術和負載均衡的調度算法。在這里,采用的負載均衡的調度技術是HTTP重定向的方式,下面主要研究一下負載均衡的調度算法的設計。
按照一般的做法,連接調度分派器主要向一個負載最小的服務器轉發連接請求。為了了解Web服務器當前的負載情況,一方面考慮Web服務器本身的靜態負荷參數,例如CPU處理能力、內存參數、硬盤參數;另一方面也要考慮Web服務器本身的動態負荷參數,例如CPU利用率、內存使用率、硬盤傳輸量、網絡流量。因此,在上面提到的向查找服務注冊的服務就是這些靜態的和動態的負荷參數。
為了能對每個Web服務器的負載情況進行一個有效的比較,因此就需要一個能反映Web服務器負載情況的參數。這里給出一個計算公式,以任意一個正常工作的服務器信息(假定以M號服務器)為基準,將其他正常服務器(假定為i號服務器)的信息代入下列公式進行加權計算:
■
各個參數的含義如下:
pi:是反映第i號服務器負載情況的值。λ1:CPU處理能力。i號服務器CPU處理能力參數為λ1i,基準服務器CPU處理能力參數為λ1M。λ2:內存參數。i號服務器內存參數為λ2i,基準服務器內存參數為λ2M。λ3:硬盤參數。i號服務器硬盤參數為λ3i,基準服務器硬盤參數為λ3M 。C :CPU的使用率。i號服務器CPU的使用率為Ci,基準服務器內存的使用率為cM。M:內存使用率。i號服務器內存的使用率為Mi,基準服務器內存的使用率MM。D:硬盤傳輸量。i號服務器的硬盤傳輸量為Di ,基準服務器的營盤傳輸量為DM。N :網絡流量。i號服務器的網絡流量為Ni ,基準服務器的網絡流量為Nm。α:CPU比較的權值。β:內存比較的權值。γ:硬盤比較的權值。θ:網絡比較的權值。α、β、γ、θ的初始值均為1。我們可以根據集群運行的實際情況加大或減小其中的某個權值以強調或減弱某方面的負載性能。在對服務器CPU,內存,硬盤負載性能進行比較時,綜合考慮了這些硬件的靜態參數和動態負載。
通過上面公式,對所有Web服務器相關參數的計算,最終可以確定一個負載最小的Web服務器,從而使連接調度分派器把客戶的HTTP請求重定向于它。
在這里,還需要考慮這么一種情況。假如在某一時刻有n個HTTP請求到達連接調度分派器,如果按照上面的算法,最終會把這n個連接請求都定向于一個Web服務器。此時就有可能使這個Web服務器成為集群中負載最重的,甚至可能超過其所能承受的負荷,所以有必要對上面的算法進行改進,在這里,考慮根據每個Web服務器負載情況合理地給它們分配連接請求。假設有m個Web服務器,并且通過計算獲得反映他們負載情況的值,分別為p1、p2…pm,那么向第j個Web服務器轉發連接請求的個數為n*(pj/(p1+p2+...+pm))。
3.2 高可用性的保證
在Web服務器集群的研究中,高可用性保證是一個非常重要的部分。在這里,我們看看在基于Jini技術的Web服務器集群中,其高可用性是如何實現的。
對于欲加入到服務器集群中的Web服務器來說,它是通過代理向查找服務進行注冊來聲明自己的存在的。當其中的一個Web服務器自動退出或出現故障時,他在查找服務上注冊的信息就會全部消除。
連接調度分派器在進行連接請求轉發時都是在查找服務上進行尋找可用的Web服務器,而不是直接與Web服務器進行通訊。于是,退出或出現故障的Web服務器就被屏蔽掉了,從而保證了Web服務器集群的高可用性。
4 結束語
通過對Jini技術和Web服務器集群的工作原理的研究,提出了一個新的構造Web服務器集群的思路,那就是基于Jini技術來構建Web服務器集群,同時并分析了基于Jini技術的關于Web服務器集群負載均衡、高可用性這些關鍵技術的的解決方案。
當然,這其中還有許多不足的地方。例如在論文中沒有研究討論集群中失效恢復、任務均衡、Jini服務代理的實現等方面的問題。對此,將會在以后的深入研究中給出相應的闡釋。
參考文獻:
[1] W Keith Edwards. Jini核心技術[M]. 王召福, 等譯. 北京:機械工業出版社,2000.
[2] Jan Newmarch. Jini核心技術開發指南[M]. 林琪,等譯. 北京:中國電力出版社,2003.
[3] 楊思忠,駱志剛,劉錦德.一個適用于Internet即插即用環境[J].計算機科學,2000,9(27):340-345.
[4] 張凱賓. 關于分布式網絡體系Jini的分析[J]. 計算機應用,1999,51(20):32-34.
[5] 汪東升,鄭緯民. 高可用集群計算[J]. 小型微型計算機系統,2000,11(21):1126-1129.
[6] 胡季敏,雷乃旺. 使用動態負載均衡技術的Linux高性能集群服務器研究[J]. 微型電腦應用,2001,4(17):27-28.
[7] 胡子昂,王立. 算法、網絡拓撲及謂度頻率與動態負載平衡的關系[J]. 計算機工程與科學,2000,1(22):104-107.