SOA面向服務架構

2021-08-16 11:06:58 字數 1786 閱讀 1207

首先martin fowler提出soa歧義service oriented ambiguity,認為"什麼是soa"是不可能回答,因為不同的人意味著不同的事情,soa意味服務介面,意味流程整合,意味資源再利用,意味著管制,在下面soa元件圖中,服務和服務消費者(客戶端)之間存在多個約束,當乙個服務顯式暴露後,客戶端能夠通過繫結定位到該服務,相當於兩者簽訂了合同,規定了合同內容和如何實施,具體合同的描述是通過訊息方式進行:

服務兩個重要特點:自治和管制,自治代表服務不能被外部勢力牽制,比如如果乙個服務內部處理中需要呼叫外部資源或等待外部流程結束,這種等待不能影響服務本身的呼叫,如果乙個服務分為顯式對外和隱式內部兩個部分,那麼自治是針對隱式內部,意味著我們不能在具體乙個服務中直接使用同步**實現複雜功能。如:

public aserviceimpl implements aservice

}

在aserviceimpl的productsale方法中,我們獲得商品的庫存和定價,都是通過同步的rpc實現呼叫的,這樣造成productsale方法依賴於inventoryservice和priceservice,無法實現自身自治。

實現服務真正自治,實際就是解決類之間依賴耦合的問題,訊息是一種方式,但是基於訊息又有兩種通訊方式,基於請求響應和基於事件的eda。

從服務自治可以看出,為什麼要提出服務必須自治,因為服務是受管制的,在實際業務活動中,不同服務是被不同部分管理,比如定價服務歸屬財務部門系統,庫存歸屬倉庫系統,涉及系統之間呼叫協調不能自己使用同步rpc,而是需要訊息。

在實際應用中,很多單位使用soa主要看中其能夠無縫整合新舊系統,稱為eai企業應用整合,下圖是蘇寧的一種soa圖,使用esb企業服務匯流排這樣的訊息系統整合了新舊各種系統。

使用soa和esb能夠靈活實現業務流程管理,工作流的管理bpm,如下圖,乙個訂單的產生可能需要幾個部門批准才能完成,而且這幾個部門經常是變化的,如何靈活實現這種批准流程的定製也成為soa實現的一部分,如下:

注意圖中1 2 3 4 5 6 7 8 9標註的訂單處理流程步驟,這種不同服務之間呼叫處理順序可通過bpm進行靈活定製。

目前提供soa全套解決方案和產品的廠商很多,包括ibm sap和oracle,國內金蝶用友浪潮軟體等等,比如蘇寧的soa是以sap為主的八國聯軍組裝,既然soa中介軟體服務商已經為我們提供了成熟的架構方案和產品,那麼作為soa使用者是否就無需頂層架構設計了呢?當然不是,soa使用者要根據自己業務進行模組劃分,進行領域建模設計,根據ddd領域驅動設計將業務分解為乙個上下文模組,然後再用服務作為對外介面,內部封裝的是ddd聚合根,而傳統soa作法是內部封裝的是資料表的dto,從而導致soa服務內部腐爛堵塞,違背soa自治和可用性等原則約束。具體可見ddd領域驅動設計。

soa的好處

1. 松耦合:由於服務自治,有一定封裝邊界,服務呼叫互動是通過發布介面。這意味著應用程式不感興趣的服務如何被實現。

2.位置透明:服務的消費者不必關係服務位於什麼地方。

3.可在異構平台間復用。可以將遺留系統包裝成服務。

4.便於測試,能並行開發,較高可靠性和良好可伸縮性。

面向服務架構(SOA)的原則

web service已經不再是新婚的娘子。眾多企業都已經建立各種實驗性web services 專案,事實證明,這項新興的分布式計算技術確實能夠降低整合和開發的成本。另外,一些關鍵的web services標準紛紛制定,強安全 robust security 和管理方面的產品也陸續問世。對於志向遠...

面向服務架構(SOA)的原則

web service已經不再是新婚的娘子。眾多企業都已經建立各種實驗性web services 專案,事實證明,這項新興的分布式計算技術確實能夠降低整合和開發的成本。另外,一些關鍵的web services標準紛紛制定,強安全 robust security 和管理方面的產品也陸續問世。對於志向遠...

面向服務架構(SOA)的原則

web service已經不再是新婚的娘子。眾多企業都已經建立各種實驗性web services 專案,事實證明,這項新興的分布式計算技術確實能夠降低整合和開發的成本。另外,一些關鍵的web services標準紛紛制定,強安全 robust security 和管理方面的產品也陸續問世。對於志向遠...