《分散式java運用:基礎與實踐》筆記2
第二章、大型分散式java應用與SOA
隨著業務複雜性的上升,單系統無法滿足需求。需要多系統細化分工!拆分系統必然帶來系統之間資訊互動的問題。簡單地辦法是統一互動標準——SOA。
SOA全稱是面向服務架構。它強調系統間用標準的服務方式進行互動,各系統允許採用不同語言、不同框架,但互動必須以標準的服務進行。
挑戰:
伺服器多級呼叫帶來的延時;
除錯/跟蹤困難;
更高的安全監測需求;
現有應用的移植;
Qos支援(限制流量、機器資源分配)
高可用、可伸縮。
多版本依賴管理。
綜合,實現一個大型應用的SOA平臺應滿足:
1) 統一服務互動方式,實現現有應用無縫整合。
2) 提供除錯跟蹤支援。
3) 依賴管理;
4) 高可用可伸縮。
2.1基於SCA實現SOA
SCA(Service Component Architecture):大廠商聯合組織制定的SOA具體實現規範。
為了減少系統實現侵入,採用XML定義Component對映到系統本身介面的實現上。SCA允許多種對映方式。
SCA提供了清晰的釋出服務、呼叫服務和無縫與現有應用的整合。除錯跟蹤、依賴管理、高效能高可用未定義。
2.2、基於ESB實現SOA
可以認為ESB只是個概念:基於訊息中介軟體來實現系統間的互動。5要素:
標準的訊息通訊格式;
訊息路由;
支援多種資訊互動型別;
支援多種網路協議;
支援多種資料格式並相互轉換。
綜述:訊息模式承擔了統一服務互動,支援同步非同步互動。除錯跟蹤沒定義;通過訊息流轉判斷依賴關係。高效能高可用取決框架。
2.3、基於Tuscany實現SOA
Tuscany是IBM和Bea捐獻給Apache的產品,也是最常用的SCA實現框架之一。
支援更多的釋出方式:Webserver、ajax、corba、rmi等等
呼叫服務:和SCA一樣支援更多應用整合方式,
支援的通訊及互動方式:比SCA支援更多的通訊方式
綜述:除錯跟蹤會把錯誤帶到呼叫端;依賴管理、高效能高可用沒有在SCA上擴充套件。
2.4、基於Mule實現SOA
Mule是常用ESB實現框架之一。
釋出服務:配置上較為簡單,支援以WebService、jms等方式將Spring和普通java物件釋出為Mule Service,相對Tuscany弱了。
呼叫服務:相對麻煩,由於ESB強調以訊息方式傳送給匯流排決定的。
通訊方式:Webservice和jms兩種。
互動方式:Mule可明確指定synchronous的引數實現同步通訊。在不指定的情況下預設非同步。
除錯跟蹤:未做特別處理。
依賴管理:有開源服務治理框架MuleGalaxy。
高效能高可用:無專門處理。
總結
SCA及其實現框架對於服務的統一互動支援很好。ESB則適用於需要解耦方式的服務互動,及複雜的多服務互動場景。共通地,都需要自定義擴充套件:除錯跟蹤、依賴管理、高效能高可用