03.02 SOA和微服務架構的區別是什麼?

徐元一


筆者目前就職於國內知名互聯網公司,做過toG和toB的私有化項目的微服務架構設計,也做過大型產品層面的微服務架構設計,就SOA和微服務架構的區別這個問題,來談一談我的看法。

不同的聲音

某些針對微服務架構的批評聲稱微服務其實就是SOA,並沒有新鮮的內容。在某些層面,它們的確有些相似。SOA和微服務架構都是特定的架構風格,它們都以一系列服務的方式來把一個系統組織在一起。但如果深入研究,你就會發現微服務和SOA之間巨大的差異。

SOA與微服務差異

SOA與微服務的差異主要體現在三個方面:服務間通信、數據管理、服務規模:

1 服務間通信

SOA和微服務架構通常採用完全不同的技術棧:

  • SOA採用智能管道,如Enterprise Service Bus(ESB,是包含了業務和消息處理的智能管道),往往採用重量級協議,例如SOAP或其他WS*標準;

  • 微服務使用啞管道,例如消息代理,或者服務之間點對點通信,例如restfull請求或者grpc類的輕量級協議。

2 數據管理

SOA和微服務架構在處理數據的方式上也不盡相同:

  • SOA採用全局數據模型並共享數據庫;

  • 微服務架構則是每個服務都有自己的數據模型和數據庫。更進一步,每一個服務一般都擁有屬於它自己的領域模型。(筆者後續會有文章專門講述領域模型設計)

3 服務規模

SOA和微服務架構之間的另一個重要區別就是服務的尺寸(規模):

  • SOA善於集成大型、複雜的單體應用程序;

  • 微服務則是拆分為較小的服務

SOA與微服務架構圖

一個典型的SOA系統架構如下:

一個典型的微服務架構如下:


架構師成長錄


SOA架構強調的是整體企業IT架構,而企業IT架構包括應用架構、數據架構、技術架構,SOA架構及方法論幫助企業制定正確的IT架構戰略,將企業系統劃分為不同的服務,增強系統間的靈活性的同時,為企業搭建一個統一的IT治理體系。微服務架構更多則側重於應用架構,或者說應用開發的技術架構。

早期SOA剛興起時,提到SOA,經常想到ESB,ESB定位是通過熱拔插方式實現系統的集成、互聯互通,SOA是一個概念,ESB做支撐落地SOA,SOA架構更加偏重於企業資產的複用,資源服務化管理,解決異構應用的對接和服務化。

微服務強調服務拆分儘可能小,服務相互獨立無互相依賴,儘可能使用簡單協議如REST,微服務更加強調服務的自治性,每個模塊模塊能夠單獨部署,這樣一方面簡化了模塊重組排列的方式,但同時將每一個應用拆分為單獨的部署工程增加了工程下測試、運維的難度。


數通暢聯


微服務架構系統靈活性,健壯性,擴展性好,特別適合需求變化迅速的場景。但系統複雜度高,部署,管理難度大。微服務除了開發期框架之外,還有需要一系列的運行期中間件支撐,如API網關,服務註冊中心,統一配置中心等。 目前國內比較成熟的吧,東軟有一支團隊在做,他們網站是 https://platform.neusoft.com/


用戶5702379994320


微服務首先是一個架構思想,和它同一層面的東西有SOA,SOA是一種粗粒度、松耦合的的服務架構,強調的是異構系統之間的通信和解耦合,而微服務架構強調的是系統按業務邊界做細粒度的拆分和部署:

兩者有個最明顯的區別,SOA的通信使用企業服務總線ESB,微服務的通信使用輕量級通信協議如Restful。


IT極客老兵


單體架構 基於ESB(企業服務總線)的SOA架構 互聯網技術發展的必然產物微服務架構

單體架構和SOA架構系統部署,管理相對簡單,但系統健壯性,靈活性,擴展性相對一般,適合業務,用戶量,變化相對穩定的場景。

微服務架構系統靈活性,健壯性,擴展性好,特別適合需求變化迅速的場景。但系統複雜度高,部署,管理難度大。

東軟的微服務架構做的不錯,具體可以去官網看看,https://platform.neusoft.com/


分享到:


相關文章: