| 在WEBLOGIC環(huán)境中考慮SOA 
  最近我在為一個(gè)客戶工作,他們有許多部署在WebLogic 8.1上的J2EE應(yīng)用程序,需要我?guī)椭麄儼褢?yīng)用程序資產(chǎn)轉(zhuǎn)化為SOA的服務(wù)資產(chǎn)。他們有嚴(yán)格的時(shí)限,所以不能對(duì)應(yīng)用程序代碼進(jìn)行大的改動(dòng)。在討論中,他們不斷提出關(guān)于Web服務(wù)的問(wèn)題,我感覺(jué)人們通常將Web服務(wù)看作SOA的構(gòu)件塊。他們關(guān)注的是將應(yīng)用程序組件轉(zhuǎn)化為Web服務(wù)以及由此給整體環(huán)境和操作帶來(lái)的影響。 許多人將Web服務(wù)看作SOA基礎(chǔ)架構(gòu)的構(gòu)件塊,這并不奇怪。我認(rèn)為Web服務(wù)可以是SOA的構(gòu)件塊,但并不一定是必需的。下面我將介紹為什么以及如何可以將部署在WebLogic Server上的應(yīng)用程序組件看作作為SOA一部分的服務(wù)。 應(yīng)用程序可以被分解為實(shí)現(xiàn)業(yè)務(wù)功能的組件。每一個(gè)應(yīng)用程序都有特定的業(yè)務(wù)、功能和操作需求。功能需求要迎合實(shí)現(xiàn),在這方面我不準(zhǔn)備花太多時(shí)間介紹,因?yàn)槲覀冇懻摰氖且呀?jīng)成為企業(yè)一部分的、需要轉(zhuǎn)化為SOA構(gòu)件塊的應(yīng)用程序。此時(shí)我們需要關(guān)注的是,如何關(guān)聯(lián)業(yè)務(wù)需求并為該應(yīng)用程序提供一個(gè)輕松的操作環(huán)境。 許多業(yè)務(wù)需求都?xì)w結(jié)為對(duì)應(yīng)用程序的服務(wù)水平協(xié)議(SLA)的滿足,業(yè)務(wù)需求可能包括以下方面: 
 操作需求與維護(hù)基礎(chǔ)架構(gòu)有關(guān),可能包括以下方面: 
 大多數(shù)情況下,WebLogic實(shí)例上部署了許多應(yīng)用程序,難以將上述需求關(guān)聯(lián)到該環(huán)境中。 隔離:給出上述場(chǎng)景之后,我們來(lái)看一種將這樣的環(huán)境轉(zhuǎn)化為SOA的一部分的方法。第一步是要隔離被認(rèn)為是關(guān)鍵型的應(yīng)用程序或組件??梢酝ㄟ^(guò)將這些應(yīng)用程序部署到各自的WebLogic實(shí)例中,然后關(guān)聯(lián)適當(dāng)?shù)拇鎯?chǔ)器和WebLogic資源到該應(yīng)用程序來(lái)實(shí)現(xiàn)隔離。然后這些服務(wù)器實(shí)例可以被集群化,這樣就有助于進(jìn)行故障轉(zhuǎn)移,從而使環(huán)境具有高度可用性。不要忘記:業(yè)務(wù)期望值越高,基礎(chǔ)架構(gòu)的成本就越昂貴。如果需要隔離應(yīng)用程序的特定組件,可以利用定制的執(zhí)行隊(duì)列(Execute Queue)或工作管理器(Work Manager)(9.0中的新特性),為它們配置適當(dāng)?shù)木€程數(shù)。創(chuàng)建執(zhí)行隊(duì)列可以為應(yīng)用程序組件提供分離的請(qǐng)求通道,并防止請(qǐng)求缺乏關(guān)鍵型業(yè)務(wù)功能。在連接池級(jí)進(jìn)行隔離可以確保數(shù)據(jù)庫(kù)資源的可用性。 服務(wù)器特征:我們需要從吞吐量、負(fù)載之下的響應(yīng)等方面來(lái)了解服務(wù)器特征。這是通過(guò)進(jìn)行負(fù)載/壓力測(cè)試,然后調(diào)優(yōu)環(huán)境以獲得WebLogic Server實(shí)例的最佳性能指標(biāo)來(lái)完成的。這是一項(xiàng)重要的任務(wù),因?yàn)樗梢詭椭?guī)劃以后的應(yīng)用程序采用率,從而提供一個(gè)可伸縮的環(huán)境。 災(zāi)難恢復(fù)規(guī)劃:關(guān)鍵型應(yīng)用程序應(yīng)該有適當(dāng)?shù)臑?zāi)難恢復(fù)規(guī)劃。我信任hot-hot型而不是hot-standby(熱備份)型的冗余環(huán)境。如果備份不能運(yùn)行該怎么辦?如果出現(xiàn)故障,有多少服務(wù)器實(shí)例才足以維持峰值負(fù)載?關(guān)于這方面的詳細(xì)信息也必須在文檔中注明。所有這些可以確保在出現(xiàn)故障時(shí)能夠有一個(gè)運(yùn)行良好的環(huán)境,而保護(hù)業(yè)務(wù)是底線。 統(tǒng)一管理:我曾經(jīng)在一些機(jī)構(gòu)中看到他們用一個(gè)操作小組來(lái)管理多個(gè)WebLogic域。這樣的環(huán)境是難于維護(hù)和管理的。考慮需要進(jìn)行更新的場(chǎng)景。還有監(jiān)控——這是一項(xiàng)日常操作任務(wù)——必須查看多個(gè)WebLogic Server控制臺(tái)以收集信息。我的建議是,在可能的地方對(duì)類(lèi)似的應(yīng)用程序創(chuàng)建多個(gè)集群而不是多個(gè)域。集群提供對(duì)應(yīng)用程序的固有隔離級(jí)別,這會(huì)產(chǎn)生較少的域以及更易于管理的環(huán)境。 操作是面向流程的:對(duì)環(huán)境的操作很大程度上是面向流程的,且需要進(jìn)行詳細(xì)的記錄。錯(cuò)誤模式和正確的解決方案的記錄都是一個(gè)動(dòng)態(tài)過(guò)程。環(huán)境進(jìn)行升級(jí)和打補(bǔ)丁的停機(jī)時(shí)間必須符合高可用性的業(yè)務(wù)需求。必須為維護(hù)設(shè)置適當(dāng)?shù)倪^(guò)程。還要定義逐步升級(jí)的過(guò)程,并寫(xiě)入文檔。作為部署過(guò)程的一部分,還應(yīng)該采用域模板,以便產(chǎn)生跨不同環(huán)境的一致域。 提供透明性:一個(gè)管理良好的環(huán)境需要有針對(duì)關(guān)鍵性業(yè)務(wù)破壞的報(bào)警機(jī)制。在問(wèn)題診斷時(shí),服務(wù)器日志中的信息必須有一定的透明度。應(yīng)用程序必須記錄有助于問(wèn)題診斷的關(guān)鍵信息。在問(wèn)題診斷時(shí),可以使用諸如來(lái)自Splunk之類(lèi)的工具來(lái)聚合來(lái)自服務(wù)器環(huán)境中不同日志的信息。此外,預(yù)期和實(shí)際的關(guān)鍵性技術(shù)指標(biāo)也應(yīng)該被收集并關(guān)聯(lián)起來(lái)。例如,在容量規(guī)劃期間,可以基于業(yè)務(wù)需求預(yù)測(cè)特定數(shù)目的并發(fā)用戶,而這個(gè)數(shù)字可能與生產(chǎn)環(huán)境中實(shí)際得到的數(shù)字不同。這類(lèi)技術(shù)指標(biāo)應(yīng)該定期報(bào)告,以方便以后的環(huán)境調(diào)優(yōu)。 結(jié)束語(yǔ) 原文出處 Thinking SOA in a WebLogic Environmenthttp://dev2dev./blog/srengan/archive/2005/12/post.html  
 | |||||||
|  | 
來(lái)自: bluecrystal > 《BEA weblogic》