Web應用程序級別的Cluster實現技術

Cluster 技術在很多重要應用中都很關鍵,利用 Cluster 可以保證系統的高可用性。但往往 Cluster 在很多人眼裏都是高不可攀的,認爲這是非常高端的技術。其實不然,你也可以嘗試在你的應用內部實現一種相對比較簡單的 Cluster,這種方式對很多中小型的 Web 應用已經足夠了。

這種應用級別的 Cluster 技術一個獨特的優勢就是你可以不依賴于任何應用程序服務器,象 Tomcat, WebSphere, WebLogic 等,完全是是自己應用內部的實現。這樣可以實現在混合環境下的 Cluster,比如我們可以利用一個 Windows 2000 下跑的 Tomcat 和 一個在 Linux 下跑的 WebSphere 組成一個 Cluster。

我們要實現的 Cluster 功能如下:

1.有三台服務器,一台做 Balancer,另外兩台做 Application Server;

2.Balancer 可以根據兩台 Application Server 的負載情況來分配用戶請求;

3.在某台 Application Server down 掉後,Balancer 可以馬上知道,並在以後不再向這個 Application Server 轉發用戶請求;

4.在啓動新的 Application Server 後,Balancer 也可以馬上知道,並在以後會向該 Application Server 轉發用戶請求;

具體實現方法如下:

首先我們要保證 session 信息能在幾台 Application Server 間傳遞,你的Web 應用一般都需要用戶登錄,並保留登錄信息在 session 裏。如果用戶是在一台 Application Server 上登錄的,那再訪問另外一台 Application Server的時候應該怎樣判斷該用戶已在別的服務器上登錄過了呢?

我們可以用 Cookie 解決這個問題,但 Cookie 有一個限制,就是 domain,即你在一台服務器上設置了一個 Cookie 後,只有這台服務器才能訪問到這個 Cookie,其他服務器根本訪問不到。我們必須想個辦法讓其他服務器也能訪問到,這是我們這個 Cluster 實現中的關鍵點之一。

我們可以這樣解決,在一台 App Server 登錄後,App Server 先設置一個 Cookie,然後再發給客戶端一個象下面這樣的 JSP

<html

<head

</head

<body

<form action="http://balancer_setcookie_jsp_url" method="POST" name="frmSetCookie"

<input type="hidden" name="cookieValue" value="<%=cookieValue%"

<input type="hidden" name="redirectURL" value="<%=redirectURL%"

</form

<script lnguage="JavaScript"

document.frmSetCookie.submit();

</script

</body

</html

上面這段程序會立即自動提交個 balancer_setcookie_jsp_url 這個在 Balancer 上的程序,這個程序是這樣處理的:

<%

String redirectURL = request.getParameter("redirectURL");

String cookieValue = null;

cookieValue = request.getParameter("cookieValue");

if (cookieValue != null)

{

Cookie c = new Cookie("itman",cookieValue);

c.setPath("/");

response.addCookie(c);

%

<html

<head

</head

<body

<script language="JavaScript"

document.location.href = "<%=redirectURL%";

</script

</body

</html

<%

}

else

{

if (redirectURL != null)

{

response.sendRedirect(redirectURL);

}

else

{

//error handling

}

}

%

這個 Balancer 上的程序先取到 App Server 傳來的 cookieValue 和 redirectURL這兩個參數,然後設一個 Cookie,然後再轉回到 redirectURL 所設定的 URL 去,這樣就可以保證 Balancer 也能訪問到這個 Cookie 值了。

現在 Balancer 可以取到 App Server 所設的 Cookie 了,下次客戶訪問過來的時候就先取到 Cookie 值,然後選擇一個負載最少的 App Server 把請求轉發過去。轉發過去的時候也是采用上面 App Server 爲 Balancer 設 Cookie 的方法,Balancer 給要轉的 App Server 設一個 Cookie,這個 App Server 就可以判斷出該用戶是否已登錄了。

現在我們已經解決了不同的 App Server 傳遞登錄信息的問題,下面需要處理的是Balancer 和 App Server 之間的信息交換問題。

每個 App Server 在運行時都需要定時給 Balancer 傳遞一個 heart-beat,Balancer上會有個後台線程在實時檢測,如果發現那個 App Server 的 heart-beat 已經超時就去掉它,在以後不再轉用戶請求過來。

具體實現方式是這樣的:

Balancer 上啓動一個 RMI Service thread,作爲 App Server 注冊 heart-beat 信息用,App Server 也會起來一個線程,專門是每隔指定的時間就訪問 Balancer上的 RMI Service 來注冊自己。Balancer 會維護一個可用 App Server 的列表,並記錄轉發用戶請求的次數,這樣就可以在下次用戶請求過來的時候選擇出負載最低的 App Server 並把請求轉過去。

在新起來一台 App Server 後,會立即向 Balancer 注冊,這樣 Balancer 就會加入到 App Server 列表中。

在一台 App Server 當掉後,Balancer 收不到它的 heart-beat 就會把它從 App Server列表中去掉。

這種 Cluster 實現方式是很容易理解的,也很有效,可以有效保證應用的高可用性。

一種Web應用程序級別的Cluster實現技術
  Cluster 技術在很多重要應用中都很關鍵,利用 Cluster 可以保證系統的高可用性。但往往 Cluster 在很多人眼裏都是高不可攀的,認爲這是非常高端的技術。其實不然,你也可以嘗試在你的應用內部實現一種相對比較簡...查看完整版>>一種Web應用程序級別的Cluster實現技術
 
一種Web應用程序級別的Cluster實現技術
  摘要  Cluster 技術在很多重要應用中都很關鍵,利用 Cluster 可以保證系統的 高可用性。但往往 Cluster 在很多人眼裏都是高不可攀的,認爲這是非常 高端的技術。其實不然,你也可以嘗試在你的應用內部實現一種...查看完整版>>一種Web應用程序級別的Cluster實現技術
 
一種 Web 應用程序級別的 Cluster 實現技術
  Cluster 技術在很多重要應用中都很要害,利用 Cluster 可以保證系統的高可用性。但往往 Cluster 在很多人眼裏都是高不可攀的,認爲這是非常高端的技術。其實不然,你也可以嘗試在你的應用內部實現一種相對比較簡...查看完整版>>一種 Web 應用程序級別的 Cluster 實現技術
 
一種 Web 應用程序級別的 Cluster 實現技術(zt)
By lanf, 出處:http://www.javaresearch.org/article/showarticle.jsp?column=2&thread=13315 作者: dengkane 轉載自Java研究組織 Cluster 技術在很多重要應用中都很關鍵,利用 Cluster 可以保證系統的 高可用...查看完整版>>一種 Web 應用程序級別的 Cluster 實現技術(zt)
 
ASP.NET Web應用程序的簡單AJAX實現
  提要 本文描述了使用一種簡單的方式來實現在ASP.NET web應用程序中加入AJAX功能。  一、 簡介  本文描述了一種簡單的方式來實現在ASP.NET web應用程序中加入AJAX功能。我們還將討論使用AJAX的優缺點。爲了說...查看完整版>>ASP.NET Web應用程序的簡單AJAX實現
 
Web應用程序測試方法和測試技術詳述
1. 概述 l 隨著web應用的增多,新的模式解決方案中以web爲核心的應用也越來越多, 很多公司各種應用的架構都以B/S及web應用爲主,但是有關WEB測試方面的內容並沒有相應的總結,所以我在這裏對web的測試方法和采用的測...查看完整版>>Web應用程序測試方法和測試技術詳述
 
Web 應用程序模型及其Java實現之第三部分
  第三部分:MVCD模型   在上一節中,從一般的原則上介紹了兩種Web應用模型,但是如何理解和把握這樣的模型,將不同的Web技術正確應用到Web程序不同的功能模塊中是一個非常實際的話題。下面就在實際編程中如何去...查看完整版>>Web 應用程序模型及其Java實現之第三部分
 
Web應用程序設計(高等學校計算機科學與技術教材)|報價¥28.70|圖書,計算機與互聯網,程序設計,綜合,李蘭友
目錄:圖書,計算機與互聯網,程序設計,綜合,品牌:李蘭友基本信息·出版社:清華大學出版社,北方交通大學出版社·頁碼:420 頁碼·出版日:2006年·ISBN:7810828746·條碼:9787810828741·版次:2006年12月第1版·裝...查看完整版>>Web應用程序設計(高等學校計算機科學與技術教材)|報價¥28.70|圖書,計算機與互聯網,程序設計,綜合,李蘭友
 
Visual C#.NET Web應用程序設計|報價¥20.90|圖書,工業技術,自動化、計算機技術,計算技術、計算機技術,計算機軟件,程序語言、算法語言,劉永輝
目錄:圖書,工業技術,自動化、計算機技術,計算技術、計算機技術,計算機軟件,程序語言、算法語言,品牌:劉永輝基本信息·出版社:電子工業出版社·頁碼:332 頁碼·出版日:2007年·ISBN:9787121049682·條碼:97871...查看完整版>>Visual C#.NET Web應用程序設計|報價¥20.90|圖書,工業技術,自動化、計算機技術,計算技術、計算機技術,計算機軟件,程序語言、算法語言,劉永輝
 
 
回到王朝網路移動版首頁