SOA的背景
SOA 提出的背景是企業內部的 IT 系統重復建設且效率低下, 主要體現在:
- 企業各部門有獨立的 IT 系統,比如人力資源系統、財務系統、銷售系統 ,這些系統可能都涉及人員管理,各 IT 系統都需要重復開發人員管理的功能
- 隨著業務的發展,復雜度越來越高,更多的流程和業務需要多個IT系統合作完成
- 各個獨立的 IT 系統可能采購于不同的供應商,實作技術不同,企業自己也不太可能基于這些系統進行重構
SOA詳解
為了應對傳統 IT 系統存在的問題, SOA 提出了 三個關鍵概念
- 服務:所有業務功能都是一項服務,服務就意味著要對外提供開放的能力,當其他系統需要使用這項功能時,無須定制化開發,服務可大可小,可簡單也可復雜
例如,人力資源管理可以是一項服務,包括人員基本 資訊管理、請假管理、組織結構管理等功能;而人員基本資訊管理也可以作為一項獨立 的服務,組織結構管理也可以作為一項獨立的服務 , 到底是劃分為粗粒度的服務,還是 劃分為細粒度的服務,需要根據企業的實際情況進行判斷 - ESB:Enterprise Service Bus,中文翻譯為“企業服務總線”,從名字就可以看出,ESB 參考了計算機總線的概念 ,計算機中的總線將各個不同的設備連接在一起,ESB 將企業中各個不同的服務連接在一起,因為各個獨立的服務是異構的,如果沒有統一的標準,則各個異構系統對外提供的介面是各式各樣的 ,SOA使用ESB來屏蔽異構系統對外提供各種不同的介面方式,以此來達到服務間高效的互聯互通
- 松糯合:松輯合的目的是減少各個服務間的依賴和互相影響 ,因為采用SOA架構后,各個服務是相互獨立運行的,甚至都不清楚某個服務到底有多少對其他服務的依賴,如果做不到松禍合,某個服務一升級,依賴它的其他服務全部故障,這樣肯定是無法滿足業務需求的,但實際上真正做到松輔合并沒有那么容易,要做到完全后向兼容,是一項復雜的任務
典型的SOA架構

SOA 架構是比較高層級的架構設計理念,一般情況下我們可以說某個企業采用了 SOA 的 架構來構建 IT 系統,但不會說某個獨立的系統采用了 SOA 架構
例如,某企業采用 SOA 架構, 將系統分為“人力資源管理服務”“考勤服務”“財務服務”,但人力資源管理服務本身不會再使 用 SOA 進行設計,也不會再重新使用獨立的一套 ESB
SOA解決了傳統IT系統重復建設和擴展效率低的問題,但其本身也引入了更多的復雜性,SOA 最廣為人垢病的就是 ESB, ESB 需要實作與各種系統間的協議轉換、資料轉換、透明的動態路由等功能 ,例如,下圖中ESB將JSON轉換為Java

下圖中 ESB 將阻ST 協議轉換為 RMI 和 AMQP 兩個不同的協議

ESB雖然功能強大,但現實中的協議有很多種,如JMS、WS、HTTP、RPC 等,資料格式 也有很多種,如 XML、JSON 、二進制、HTML等 ,ESB要完成這么多協議和資料格式的互相轉換,作業量和復雜度都很大,而且這種轉換是需要耗費大量計算性能的,當ESB承載的訊息太多時,ESB本身會成為整個系統的性能瓶頸
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/87364.html
標籤:其他
