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