討論不同實現(xiàn)之前,理解集群技術的概念是很有意義的,我希望不僅能給你提供關于J2EE集群產品基本的設計理念和概念,還可以概括性的描繪不同的集群實現(xiàn),使它們更容易被理解。
1 伸縮性(Scalability)
大型系統(tǒng)很難預測終端用戶的數量與行為,伸縮性是指系統(tǒng)可以支持用戶的快速增長。提高服務器同時處理并發(fā)會話的直覺的方式就是增加服務器資源(內存,CPU,或硬盤),集群是解決伸縮性的另一種可選方式。它允許一組服務器分擔處理繁重的任務,而邏輯上就象一臺服務器一樣。
2 高可用性(High Availability)
提高伸縮性的單服務器解決方案(添加內存和CPU)是并不強壯的辦法,因為單點失效原因。關鍵任務應用不能容忍服務中斷哪怕一分鐘。它要求任何時候都可以合理地可預期的響應時間訪問這些服務,集群可以通過提供額外的服務器使其在一臺服務器實效時提供服務,從而提高可用性。
3 負載均衡(Load balancing)
負載均衡是集群技術之后的一個關鍵技術,通過分發(fā)請求到不同的服務器來提高可用性和更好的性能。負載均衡器可以是一個Servlet或插件(例如a linux box using ipchains),除分發(fā)請求之外,負載均衡器應負責其他一些重要的任務,例如“會話黏附”,使得某個用戶會話始終在一臺服務器上存活,還有“心跳檢測”,防止分發(fā)請求到失效的服務器。有時候負載均衡器也參與到“失效轉移”處理。
4 容錯(Fault Tolerance)
高可用性數據不必是嚴格正確數據.在J2EE集群中,當一個服務器實例失效時,服務仍然可用,因為新的請求可由其他冗余的服務器實例處理。但如果請求正在處理當中時服務器實例失效,則不能能得到正確的數據。然而容錯服務則總是保證嚴格正確的行為。
5 失效轉移(Failover)
失效轉移是另一項使得集群實現(xiàn)容錯的關鍵技術。通過選擇集群中另一個節(jié)點,原始節(jié)點失效時處理將繼續(xù)下去。失效轉移可以顯式地編碼也可以由低層平臺自動執(zhí)行。
6 等冪方法(Idempotent methods)
可以用相同的參數重復調用的方法,并且總是得到相同的結果。這些方法不應該影響系統(tǒng)狀態(tài),可以被重復地調用而不必擔心改變系統(tǒng)。例如,“getUsername()” 是等冪方法,而“deleteFile()” 就不是等冪方法。等冪是HTTP會話和EJB失效轉移的重要概念。