關鍵字:soa 最近我在為一個客戶工作,他們有許多部署在WebLogic 8.1上的J2EE應用程序,需要我幫助他們把應用程序資產轉化為SOA的服務資產。他們有嚴格的時限,所以不能對應用程序代碼進行大的改動。在討論中,他們不斷提出關于Web服務的問題,我感覺人們通常將Web服務看作SOA的構件塊。他們關注的是將應用程序組件轉化為Web服務以及由此給整體環境和操作帶來的影響。
許多人將Web服務看作SOA基礎架構的構件塊,這并不奇怪。我認為Web服務可以是SOA的構件塊,但并不一定是必需的。下面我將介紹為什么以及如何可以將部署在WebLogic Server上的應用程序組件看作作為SOA一部分的服務。
應用程序可以被分解為實現業務功能的組件。每一個應用程序都有特定的業務、功能和操作需求。功能需求要迎合實現,在這方面我不準備花太多時間介紹,因為我們討論的是已經成為企業一部分的、需要轉化為SOA構件塊的應用程序。此時我們需要關注的是,如何關聯業務需求并為該應用程序提供一個輕松的操作環境。
許多業務需求都歸結為對應用程序的服務水平協議(SLA)的滿足,業務需求可能包括以下方面:
并發用戶
響應時間
錯誤率
工作負載優先化(業務功能按照優先級進行分解)
應用程序采用率(就用戶數目而言的應用程序擴展路線圖)
可用性
操作需求與維護基礎架構有關,可能包括以下方面:
應用程序監控
部署策略
維護(補丁、升級)
問題診斷
大多數情況下,WebLogic實例上部署了許多應用程序,難以將上述需求關聯到該環境中。
隔離:給出上述場景之后,我們來看一種將這樣的環境轉化為SOA的一部分的方法。第一步是要隔離被認為是關鍵型的應用程序或組件??梢酝ㄟ^將這些應用程序部署到各自的WebLogic實例中,然后關聯適當的存儲器和WebLogic資源到該應用程序來實現隔離。然后這些服務器實例可以被集群化,這樣就有助于進行故障轉移,從而使環境具有高度可用性。不要忘記:業務期望值越高,基礎架構的成本就越昂貴。如果需要隔離應用程序的特定組件,可以利用定制的執行隊列(Execute Queue)或工作管理器(Work Manager)(9.0中的新特性),為它們配置適當的線程數。創建執行隊列可以為應用程序組件提供分離的請求通道,并防止請求缺乏關鍵型業務功能。在連接池級進行隔離可以確保數據庫資源的可用性。
服務器特征:我們需要從吞吐量、負載之下的響應等方面來了解服務器特征。這是通過進行負載/壓力測試,然后調優環境以獲得WebLogic Server實例的最佳性能指標來完成的。這是一項重要的任務,因為它可以幫助規劃以后的應用程序采用率,從而提供一個可伸縮的環境。