WebLogic Server 9.0是BEA最新推出的應(yīng)用服務(wù)器版本。這個(gè)版本與J2EE 1.4完全兼容,性能有了更好的表現(xiàn),同時(shí)在運(yùn)行管理方面、可靠性方面有了進(jìn)一步的提高。同時(shí)WebLogic Server9.0提供了非常多的新特性,在運(yùn)行管理、系統(tǒng)可靠、高效等方面提供了很多使用功能,這里不一一列舉,有興趣可以查看:http://e-docs.bea.com/wls/docs90/notes/new.html。那么對(duì)于我們開(kāi)發(fā)和管理人員,最感興趣的有哪些,下面著重列出:
應(yīng)用升級(jí)
問(wèn)題的提出:
當(dāng)我們將更新應(yīng)用需要發(fā)布到生產(chǎn)系統(tǒng)時(shí),常常會(huì)碰到這樣的問(wèn)題:正在進(jìn)行的業(yè)務(wù)操作必須中止,將新的應(yīng)用替換舊有的應(yīng)用。這樣會(huì)使當(dāng)前正在進(jìn)行的業(yè)務(wù)操作停止,影響業(yè)務(wù)工作。另外,從業(yè)務(wù)上原有未完成的操作,新版本更新之后,如果新、舊版本有差異,會(huì)導(dǎo)致前后處理不一致?,F(xiàn)在這樣的問(wèn)題,可以在Server9.0很好的解決了。
這一功能就是Server9.0產(chǎn)品模式下應(yīng)用更新。它可以支持:
訪問(wèn)情況如下所示:
使用該功能要注意以下說(shuō)明:
Server新加狀態(tài)說(shuō)明:
在原有WebLogic Server9.0的運(yùn)行狀態(tài)基礎(chǔ)之上加入了Admin狀態(tài),這一狀態(tài)的特點(diǎn)是:
因此,使用Server在Admin狀態(tài)帶來(lái)的好處:在生產(chǎn)環(huán)境部署更新應(yīng)用時(shí),不用將前端的連接斷開(kāi),用管理員角色直接進(jìn)行測(cè)試,不再擔(dān)心前端請(qǐng)求會(huì)訪問(wèn)到應(yīng)用,影響應(yīng)用的發(fā)布和測(cè)試。這樣對(duì)于系統(tǒng)上線前的準(zhǔn)備非常有幫助。
如下,是WebLogic Server生命周期圖說(shuō)明:
對(duì)于如何切換到Admin狀態(tài),有以下兩種方式:
1.當(dāng)WebLogic Server 沒(méi)有啟動(dòng)時(shí),可以啟動(dòng)Server到Admin狀態(tài),在啟動(dòng)腳本startWebLogic.cmd 中java [options] weblogic.Server 命令options選項(xiàng)加入:
-Dweblogic.management.startupMode=ADMIN
2.當(dāng)Server 處于Running狀態(tài)時(shí),可以在管理控制臺(tái),選擇Server控制選項(xiàng),選擇Grace Suspend或者Force Suspend將Server切換到Admin狀態(tài)。
管理控制臺(tái)中的門(mén)戶應(yīng)用程序支持
管理控制臺(tái)的新架構(gòu)基于WebLogic Portal Framework,而且管理控制臺(tái)使用構(gòu)建在Structs之上的模型-視圖-控制器方法,這使得控制臺(tái)更加開(kāi)放,更加易于擴(kuò)展?,F(xiàn)在,可以以常用于擴(kuò)展門(mén)戶應(yīng)用程序的方式來(lái)擴(kuò)展管理控制臺(tái)??刂婆_(tái)擴(kuò)展可以包括現(xiàn)有頁(yè)面、新頁(yè)面和小節(jié),以及JSR 168或WSRP portlet的簡(jiǎn)單改寫(xiě)。
配置更改的兩階段提交
為了保護(hù)修改并防止其他人進(jìn)行修改,管理控制臺(tái)中引入了一個(gè)新的區(qū)域,稱(chēng)為Change Center,在開(kāi)始修改域配置之前,首先鎖定管理控制臺(tái)。當(dāng)完成修改時(shí),保存這些修改并將它們發(fā)布到域中的所有實(shí)例,也可以回滾修改并釋放鎖定。每臺(tái)服務(wù)器自行決定它是否接收修改。如果所有的服務(wù)器都接受修改,它們將更新它們的工作配置樹(shù),修改完成。如果有一臺(tái)或多臺(tái)服務(wù)器不接受修改,那么所有的服務(wù)器都不會(huì)使修改生效,因此避免了出現(xiàn)未完成的中間狀態(tài)。這種功能有助于確定WebLogic Server配置信息總是正確和一致的。
生產(chǎn)環(huán)境的服務(wù)器性能自調(diào)整
在WebLogic Server9.0之前,Server的一些性能參數(shù)是在Server啟動(dòng)之前設(shè)置的,如線程數(shù)等,不能隨著系統(tǒng)的運(yùn)行情況進(jìn)行自動(dòng)調(diào)整,這樣可能不會(huì)最大限度的使用系統(tǒng)資源。另外,Server上部署不同的應(yīng)用,但對(duì)應(yīng)用的重要級(jí)別不能按照權(quán)重分配資源的比例。針對(duì)上面的問(wèn)題,WebLogic Server9.0提供了服務(wù)器性能自調(diào)整的新特性,可以解決上述問(wèn)題。而且通過(guò)自調(diào)整功能簡(jiǎn)化了對(duì)WebLogic Server的配置過(guò)程,同時(shí)自調(diào)整功能有助于防止請(qǐng)求高峰期間的死鎖情況。
WebLogic Server中關(guān)鍵的自調(diào)整功能包括:
工作負(fù)荷(Work Managers)管理——管理員可以在域級(jí)別、應(yīng)用程序級(jí)別和模塊級(jí)別上定義工作調(diào)度策略和約束。這樣,當(dāng)我們?cè)赪ebLogic Server部署多個(gè)應(yīng)用,而這些應(yīng)用有不同的性能要求,就可以使用Work Managers定義的策略,根據(jù)應(yīng)用的重要情況,分配不同比例的資源。如,網(wǎng)上銀行業(yè)務(wù)有企業(yè)銀行業(yè)務(wù)和個(gè)人銀行業(yè)務(wù),因?yàn)槠髽I(yè)銀行業(yè)務(wù)資金數(shù)額大,可靠性要求高,那么就可以使用Work Managers為其分配更多的資源。
自動(dòng)的線程計(jì)數(shù)調(diào)整——通過(guò)基于歷史吞吐量和隊(duì)列大小,自動(dòng)修改線程池的容量,可以最大化線程池的吞吐量。
線程調(diào)度功能——WebLogic Server 9.0實(shí)現(xiàn)了commonj work manager API,把線程調(diào)度功能公開(kāi)給開(kāi)發(fā)人員。應(yīng)用程序也可以使用Work Manager API來(lái)異步執(zhí)行工作,并接收關(guān)于執(zhí)行狀態(tài)的通知。
Work Manager可以對(duì)如下資源進(jìn)行控制:
Work Managers 可以在如下配置文件進(jìn)行域級(jí)別、應(yīng)用程序級(jí)別和模塊級(jí)別上定義:
配置示例:
<work-manager>
<name>responsetime_workmanager</name>
<response-time-request-class>
<name>my_response_time</name>
<goal-ms>2000</goal-ms>
</response-time-request-class>
</work-manager>
自動(dòng)的線程計(jì)數(shù)調(diào)整:
在WebLogic Server9.0版本之前,進(jìn)程有多個(gè)執(zhí)行隊(duì)列,在不同的執(zhí)行隊(duì)列,基于優(yōu)先級(jí)和排隊(duì)順序,執(zhí)行不同的任務(wù),這樣可以避免死鎖。有缺省的執(zhí)行隊(duì)列:weblogic.kernel.default,還有預(yù)先定義的隊(duì)列來(lái)做內(nèi)部管理用,如:weblogic.admin.HTTP和 weblogic.admin.RMI。對(duì)性能的調(diào)整,可以通過(guò)調(diào)整缺省隊(duì)列上的線程數(shù),或者為特定的應(yīng)用配置自己的執(zhí)行隊(duì)列,對(duì)這個(gè)執(zhí)行隊(duì)列指定相應(yīng)的線程數(shù)。
對(duì)WebLogic Server9.0,建立了單一線程池,可以執(zhí)行所有類(lèi)型的操作。 WebLogic Server基于我們定義的規(guī)則和實(shí)時(shí)運(yùn)行情況,來(lái)調(diào)整處理工作的優(yōu)先級(jí)。線程池可以根據(jù)系統(tǒng)吞吐情況,自動(dòng)調(diào)整大小。例如,根據(jù)歷史吞吐量的統(tǒng)計(jì),表明需要更高的線程數(shù)量時(shí),WebLogic Server將自動(dòng)增加線程數(shù)目。與此類(lèi)似,當(dāng)統(tǒng)計(jì)表明減小線程不會(huì)影響吞吐量時(shí),WebLogic Server會(huì)減少線程數(shù)。這一新策略將使管理者更容易配置資源和性能調(diào)優(yōu),避免向從前一樣調(diào)整自己的執(zhí)行隊(duì)列。
過(guò)載保護(hù)當(dāng)系統(tǒng)的負(fù)載壓力非常大時(shí),如果不對(duì)處理容量進(jìn)行配置,那么會(huì)導(dǎo)致內(nèi)存耗盡(out-of-m異常、執(zhí)行隊(duì)列過(guò)載等問(wèn)題。因此在WebLogic Server9.0可以對(duì)如下資源進(jìn)行配置:
<overload-protection>
<panic-action>system-exit</panic-action>
</overload-protection>
廣域網(wǎng)或城域網(wǎng)的HTTP會(huì)話復(fù)制和故障轉(zhuǎn)移
WebLogic Server為我們提供了業(yè)界最強(qiáng)的集群功能,它能夠?qū)崿F(xiàn)系統(tǒng)的高擴(kuò)展性和高可靠性。
整個(gè)系統(tǒng)結(jié)構(gòu)見(jiàn)下圖:
假定原有集群服務(wù)為集群A 提供,在原有負(fù)載均衡前配置全局負(fù)載均衡器。另外根據(jù)Domain A的結(jié)構(gòu)復(fù)制建Domain B。這樣全局負(fù)載均衡器可以根據(jù)要求,配置相應(yīng)負(fù)載均衡策略,接收到前端請(qǐng)求時(shí),根據(jù)配置,將請(qǐng)求分發(fā)給后面的集群。通過(guò)復(fù)制通道,運(yùn)行在集群A中的服務(wù)器實(shí)例上的會(huì)話信息,可以被復(fù)制到集群B中的服務(wù)器實(shí)例上。這樣當(dāng)集群A中的某一主Server出現(xiàn)問(wèn)題時(shí),集群A中的另一個(gè)Server可以從集群B獲得會(huì)話數(shù)據(jù),對(duì)于此次會(huì)話充當(dāng)主Server。局部負(fù)載均衡可以將請(qǐng)求切換到該Server上。如果集群A中所有Server都不能提供服務(wù),局部負(fù)載均衡將HTTP請(qǐng)求返回全局負(fù)載均衡,全局負(fù)載均衡將請(qǐng)求轉(zhuǎn)發(fā)給集群B,集群B的局部負(fù)載均衡將請(qǐng)求發(fā)送給有復(fù)制會(huì)話信息的Server上。這樣就實(shí)現(xiàn)了跨集群的負(fù)載均衡。這種系統(tǒng)結(jié)構(gòu)會(huì)對(duì)異地應(yīng)用備份中心建設(shè)有參考意義——建設(shè)兩個(gè)物理位置不同的集群系統(tǒng),系統(tǒng)部署的應(yīng)用相同,當(dāng)其中的一個(gè)集群系統(tǒng)發(fā)生了網(wǎng)絡(luò)等故障時(shí),應(yīng)用的處理可以自動(dòng)切換到另一個(gè)系統(tǒng),而業(yè)務(wù)應(yīng)用不會(huì)發(fā)生中斷。
對(duì)跨集群的網(wǎng)絡(luò)結(jié)構(gòu),有兩種不同的情況:一種為跨城域網(wǎng)(metropolitan area network,MAN)中的集群,另一種為跨廣域網(wǎng)(wide area network,WAN)的集群,如地理上相隔很遠(yuǎn)的地方。對(duì)于上述兩種網(wǎng)絡(luò),跨集群的系統(tǒng)結(jié)構(gòu)是一樣的,不同的是會(huì)話復(fù)制方式不同。
對(duì)于跨MAN方式的集群,WebLogic Server提供實(shí)時(shí)基于兩個(gè)集群一級(jí)的同步會(huì)話內(nèi)存復(fù)制,這樣要求網(wǎng)絡(luò)延時(shí)比較低,在集群響應(yīng)時(shí)延范圍之內(nèi)。否則會(huì)出現(xiàn)超時(shí)錯(cuò)誤。
處理過(guò)程如下:
跨集群容錯(cuò)的幾種情況:
對(duì)于跨WAN方式的集群,主要使用會(huì)話信息通過(guò)異步的JDBC持久化到遠(yuǎn)程的集群實(shí)例上來(lái)實(shí)現(xiàn)容錯(cuò)。對(duì)異步的JDBC持久化,即定期地,將會(huì)話狀態(tài)會(huì)刷新到遠(yuǎn)程集群服務(wù)器實(shí)例上表中的存儲(chǔ)器。因?yàn)榈竭h(yuǎn)程服務(wù)器實(shí)例的JDBC持久化是異步執(zhí)行的,它比同步的JDBC復(fù)制性能更高,對(duì)于在同步JDBC復(fù)制情況,數(shù)據(jù)庫(kù)寫(xiě)操作延時(shí)會(huì)影響響應(yīng)的時(shí)間。
處理過(guò)程如下:
跨集群容錯(cuò)的幾種情況;
上述只是WebLogic Server9.0的幾個(gè)新特性的介紹,對(duì)WebLogic Server在Web Service,JMS,管理框架等方面還是非常值得關(guān)注,希望本文對(duì)我們今后的使用有所幫助。
聯(lián)系客服