SOA架構和微服務架構的區別與特點

1.SOA架構和微服務架構的區別

首先SOA和微服務架構一個層面的東西,而對於ESB和微服務網關是一個層面的東西,一個談到是架構風格和方法,一個談的是實現工具或組件。 

1.SOA(Service Oriented Architecture)「面向服務的架構」:他是一種設計方法,其中包含多個服務, 服務之間通過相互依賴最終提供一系列的功能。一個服務 通常以獨立的形式存在與作業系統進程中。各個服務之間 通過網路調用。

2.微服務架構:其實和 SOA 架構類似,微服務是在 SOA 上做的升華,微服務架構強調的一個重點是「業務需要徹底的組件化和服務化」,原有的單個業務系統會拆分為多個可以獨立開發、設計、運行的小應用。這些小應用之間通過服務完成交互和集成。

微服務架構 = 80%的SOA服務架構思想 + 100%的組件化架構思想 + 80%的領域建模思想

 

功能

SOA

微服務

組件大小

大塊業務邏輯

單獨任務或小塊業務邏輯

耦合

通常松耦合

總是松耦合

公司架構

任何類型

小型、專註於功能交叉團隊

管理

著重中央管理

著重分散管理

目標

確保應用能夠交互操作

執行新功能、快速拓展開發團隊

 

2.SOA架構和微服務架構的各自特點

SOA架構特點:

 

  • 系統集成:站在系統的角度,解決企業系統間的通訊問 題,把原先散亂、無規劃的系統間的網狀結構,梳理成 規整、可治理的系統間星形結構,這一步往往需要引入 一些產品,比如 ESB、以及技術規範、服務管理規範; 這一步解決的核心問題是【有序】
  • 系統的服務化:站在功能的角度,把業務邏輯抽象成 可復用、可組裝的服務,通過服務的編排實現業務的 快速再生,目的:把原先固有的業務功能轉變為通用 的業務服務,實現業務邏輯的快速復用;這一步解決 的核心問題是【復用】
  • 業務的服務化:站在企業的角度,把企業職能抽象成 可復用、可組裝的服務;把原先職能化的企業架構轉變為服務化的企業架構,進一步提升企業的對外服務能力;「前面兩步都是從技術層面來解決系統調用、系統功能復用的問題」。第三步,則是以業務驅動把一個業務單元封裝成一項服務。這一步解決的核心問題是【高效】

微服務架構特點:

 

  • 通過服務實現組件化 :  開發者不再需要協調其它服務部署對本服務的影響。
  • 按業務能力來劃分服務和開發團隊  開發者可以自由選擇開發技術,提供 API 服務。
  • 去中心化   每個微服務有自己私有的資料庫持久化業務數據每個微服務只能訪問自己的資料庫,而不能訪問其它服務的資料庫某些業務場景下,需要在一個事務中更新多個資料庫。這種情況也不能直接訪問其它微服務的資料庫,而是通過對於微服務進行操作。數據的去中心化,進一步降低了微服務之間的耦合度,不同服務可以採用不同的資料庫技術(SQL、NoSQL等)。在複雜的業務場景下,如果包含多個微服務,通常在客戶端或者中間層(網關)處理。
  • 基礎設施自動化(devops、自動化部署) 傳統Java EE部署架構,通過展現層打包WARs,業務層劃分到JARs最後部署為EAR一個大包,而微服務則打開了這個黑盒子,把應用拆分成為一個一個的單個服務,應用Docker技術,不依賴任何伺服器和數據模型,是一個全棧應用,可以通過自動化方式獨立部署,每個服務運行在自己的進程中,通過輕量的通訊機制聯繫,經常是基於HTTP資源API。