全稱(Service Oriented Architecture)—— 面向服務的架構。
面向服務架構(SOA)是一個組件模型,它将應用程序的不同功能單元(稱為服務)進行拆分,并通過在這些服務之間定義良好的接口和協議聯系起來。接口是采用中立的方式進行定義的,它應該獨立于實現服務的硬件平台、操作系統和編程語言。這使得構建在各種各樣的系統中的服務可以以一種統一和通用的方式進行交互。
跟 SOA 相提并論的還有一個 ESB(企業服務總線),簡單來說 ESB 就是一根管道,用來連接各個服務節點。為了集成不同系統,不同協議的服務,ESB 做了消息的轉化解釋和路由工作,讓不同的服務互聯互通。
SOA 解決的問題:
1.系統集成
企業系統不斷發展過程中,會存在N多系統間相互調用,系統間的關系可能會是一個比較雜亂的網狀結構。引入SOA來完成服務之間關系的有序化,這一步需要引入一些産品,比如 ESB、以及技術規範、服務管理規範
2.系統服務化
完成服務的複用。比如之前可能是 各個系統都寫了一套登錄注冊、發郵件、發短信等功能。現在可以将 登錄注冊、發郵件、發短信等功能邏輯抽象成可複用、可組裝的服務,通過合理的服務編排,實現業務功能的快速複用。
3.業務服務化
完成企業系統的對外服務能力。将業務單元(如:OA系統、财務系統等)封裝成一項服務。
微服務架構微服務架構和SOA架構是相似的,微服務架構算是在SOA架構上的一次升級。微服務架構的重點是“業務徹底的組件化和業務化”。原有的單體大而全的應用拆分成多個獨立運行的小應用。當然,也不需要為了微服務而微服務,也需要考慮系統的量級。比如公司隻有一個财務系統,其中有登錄注冊、發郵件、發短信、文件上傳等功能,沒有其他系統需要複用這些功能,使用人數隻有幾百人。那麼一個大而全的單體應用就可以滿足了。 企業發展過程中,沒有倒閉,而且蓬勃發展了一把。一個簡單的财務系統不能滿足需求了,CRM、OA等等功能也不适合塞在那個大而全的财務系統裡了。這個時候就可以閉着眼睛拆一把服務了。拆分成 财務系統、CRM、OA、登錄注冊、發郵件、發短信、文件服務等系統。
微服務的特征有幾點:
1. 實現服務組件化
不同的組件之間相互獨立,服務的發布一般不需要協調各個組件。
2. 按照業務劃分服務和開發團隊
不同的開發團隊可以選擇不同的技術、語言等
3. 去中心化
進一步降低了微服務之間的耦合度,在複雜的業務場景下,涉及多個微服務,通常在客戶端或者中間層(網關)處理。
每個微服務擁有自己獨立的數據庫或者其他持久化能力。
4. 基礎設施自動化(devops、CICD)
Docker 和 微服務相互成就。Docker 容器技術、微服務架構概念出現的時間都是比較早的。不過也是近些年才開始火起來的。Docker 容器技術的普及使得微服務的普及更加方便。
,