楊磊
(黑龍江省電力有限公司通信自動(dòng)化中心,黑龍江 哈爾濱 150009)
互聯(lián)網(wǎng)的出現(xiàn)使信息訪問(wèn)產(chǎn)生了質(zhì)的飛躍,但隨之而來(lái)的是Web流量的激增(高并發(fā)訪問(wèn)),由于涉及信息量十分龐大,用戶訪問(wèn)的頻率也高,許多基于Web的大型公共信息系統(tǒng)(如電子圖書(shū)館、BBS、搜索引擎和遠(yuǎn)程教育等)需要在實(shí)時(shí)性和吞吐量方面都具有較高性能的Web服務(wù)器支持。在介紹Weblogic集群之前,先看看傳統(tǒng)的雙機(jī)架構(gòu),這種架構(gòu)存在以下幾點(diǎn)不足之處:采用主機(jī)備機(jī)的方式,一般主機(jī)使用比較頻繁,導(dǎo)致另外比較空閑,資源利用不均衡;當(dāng)一個(gè)Server發(fā)生故障的時(shí)候,必須通知用戶使用另外一臺(tái)的Server,管理和維護(hù)比較麻煩;用戶切換應(yīng)用的時(shí)候,需重新登錄,有些延誤時(shí)間。
實(shí)際上,服務(wù)器的處理能力和I/O已經(jīng)成為提高Web服務(wù)的瓶頸。如果客戶的增多導(dǎo)致通信量超出了服務(wù)器能承受的范圍,那么其結(jié)果必然是服務(wù)質(zhì)量下降。顯然單臺(tái)服務(wù)器有限的性能不可能解決這個(gè)問(wèn)題,一臺(tái)普通服務(wù)器的處理能力只能達(dá)到每秒幾萬(wàn)個(gè)到幾十萬(wàn)個(gè)請(qǐng)求,無(wú)法在一秒內(nèi)處理上百萬(wàn)個(gè)甚至更多的請(qǐng)求。顯然,采用高性能的主機(jī)系統(tǒng)(小型機(jī)或大型機(jī))是可行的,但是除了價(jià)格十分昂貴外,這種高速、高性能的主機(jī)系統(tǒng),很多情況下也不能解決同時(shí)處理幾萬(wàn)個(gè)并發(fā),因?yàn)?,高速主機(jī)系統(tǒng)只是對(duì)于復(fù)雜的單一任務(wù)和有限的并發(fā)處理顯得高性能,而Internet中的Web服務(wù)器大多數(shù)處理是“簡(jiǎn)單任務(wù)”、高強(qiáng)度并發(fā)處理,因此即便有大資金投入高性能、高價(jià)格的主機(jī)系統(tǒng),也不能很好的滿足Web應(yīng)用的需要。這就是利用Web服務(wù)器集群實(shí)現(xiàn)負(fù)載均衡的最初基本設(shè)計(jì)思想。
可以動(dòng)態(tài)增加部署在 WebLogic Server集群中的應(yīng)用程序的容量以滿足需要??梢詫⒎?wù)器實(shí)例添加到集群中而不會(huì)中斷服務(wù),應(yīng)用程序?qū)⒗^續(xù)運(yùn)行而不會(huì)影響客戶端和最終用戶。
高可用性。在WebLogic Server集群中,當(dāng)服務(wù)器實(shí)例失敗時(shí)應(yīng)用程序可繼續(xù)進(jìn)行處理。可通過(guò)將應(yīng)用程序組件部署到集群中的多個(gè)服務(wù)器實(shí)例,“集群”這些組件,這樣,如果在其上運(yùn)行某個(gè)組件的服務(wù)器實(shí)例失敗,則將此組件部署到的其他服務(wù)器實(shí)例可以繼續(xù)進(jìn)行應(yīng)用程序處理。
集群WebLogic Server實(shí)例的選擇對(duì)于應(yīng)用程序開(kāi)發(fā)人員和客戶端是透明的。但是,了解啟用集群的技術(shù)基礎(chǔ)結(jié)構(gòu)將有助于編程人員和管理員最大化其應(yīng)用程序的可伸縮性和可用性。
2.2.1 應(yīng)用程序故障轉(zhuǎn)移
簡(jiǎn)單的說(shuō),故障轉(zhuǎn)移是當(dāng)應(yīng)用程序組件(在下列部分中通常稱作“對(duì)象”)正在處理某個(gè)特定作業(yè)時(shí)某些處理任務(wù)部分由于任何原因而變得不可用,已失敗對(duì)象的副本將結(jié)束此作業(yè)。WebLogic Server支持自動(dòng)或手動(dòng)將集群服務(wù)器實(shí)例從一臺(tái)計(jì)算機(jī)遷移到另一臺(tái)計(jì)算機(jī),可遷移的受管服務(wù)器被稱作“可遷移服務(wù)器”。本功能適用于要求高可用性的環(huán)境。
2.2.2 負(fù)載平衡
負(fù)載平衡是在環(huán)境中跨計(jì)算資源與網(wǎng)絡(luò)資源平均分發(fā)作業(yè)和關(guān)聯(lián)的通信。
2.2.3 哪種類型的對(duì)象可以集群
集群的應(yīng)用程序或應(yīng)用程序組件在集群中的多WebLogic Server實(shí)例上可用。如果已集群某個(gè)對(duì)象,則此對(duì)象的故障轉(zhuǎn)移和負(fù)載平衡是可用的。將對(duì)象均勻部署到集群中的每個(gè)服務(wù)器實(shí)例,可以簡(jiǎn)化集群管理、維護(hù)和故障排除。
Web應(yīng)用程序可由不同類型的對(duì)象組成,包括企業(yè) Java Bean(EJB),servlet和 Java Server Pages(JSP)。每種對(duì)象類型都具有唯一的一組與控制、調(diào)用以及它如何在應(yīng)用程序內(nèi)起作用相關(guān)的行為。由于此原因,WebLogic Server用于支持集群的方法,以及用于提供負(fù)載平衡和故障轉(zhuǎn)移的方法,會(huì)因不同的類型對(duì) 象而異??稍赪ebLogic Server部署對(duì)下列類型的對(duì)象進(jìn)行集群:Servlet、JSP、EJB、遠(yuǎn)程方法調(diào)用(Remote Method Invocation,簡(jiǎn)稱 RMI)對(duì)象、Java消息服務(wù)(JMS)目標(biāo)、Java數(shù)據(jù)庫(kù)連接 (JDBC)。
2.2.4 什么類型的對(duì)象不可集群
以下API和外部服務(wù)不可在WebLogic Server內(nèi)集群:包含文件共享的文件服務(wù)、時(shí)間服務(wù)。在集群的各個(gè)WebLogic Server實(shí)例中仍可使用這些服務(wù)。但是這些服務(wù)不能使用負(fù)載平衡或故障轉(zhuǎn)移功能。
集群中的WebLogic主機(jī)必須使用永久的靜態(tài)IP地址。動(dòng)態(tài)IP地址分配不能用于集群環(huán)境。如果服務(wù)器位于防火墻后面,而客戶機(jī)位于防火墻外面,那么服務(wù)器必須有公共的靜態(tài)IP地址,只有這樣,客戶端才能訪問(wèn)服務(wù)器。
集群中的所有WebLogic服務(wù)器必須位于同一個(gè)局域網(wǎng),并且必須是IP廣播可到達(dá)的。
集群中的所有WebLogic服務(wù)器必須使用相同的版本。
本文提出了基于WebLogic的集群Web服務(wù)器的設(shè)計(jì)方案,系統(tǒng)能夠達(dá)到負(fù)載均衡的目的,該方案已經(jīng)在多個(gè)網(wǎng)站中使用并取得了很好的效果。
[1]石開(kāi)強(qiáng).集群WEB代理服務(wù)器的設(shè)計(jì)[J].電子科技大學(xué),2008,04-01.