從單體到微服務

什麼是單體

  一個歸檔包(可以是JAR、WAR、EAR或其它歸檔格式)包含所有功能的應用程序,通常稱爲單體應用。
而架構單體應用的方法論,就是單體應用架構。

單體架構的好處

  • 開發簡單
  • 易於做大規模更改
  • 測試簡單
  • 部署簡單
  • 橫向擴展簡單

分層架構

在這裏插入圖片描述

六邊形架構

在這裏插入圖片描述

SOA

  面向服務的架構(SOA)是一個組件模型,它將應用程序的不同功能單元(服務)進行拆分,並通過這些服務之間定義良好的接口和契約聯繫起來。接口是採用中立的方式進行定義的,它應該獨立於實現服務的硬件平臺、操作系統和編程語言。這使得構建在各種各樣的系統中的服務可以以一種統一和通用的方式進行交互。

SOA的特點

  系統集成:站在系統的角度,解決企業系統間的通信問 題,把原先散亂、無規劃的系統間的網狀結構,梳理成 規整、可治理的系統間星形結構,這一步往往需要引入 一些產品,比如 ESB、以及技術規範、服務管理規範; 這一步解決的核心問題是【有序】

  系統的服務化:站在功能的角度,把業務邏輯抽象成可複用、可組裝的服務,通過服務的編排實現業務的快速再生,目的:把原先固有的業務功能轉變爲通用的業務服務,實現業務邏輯的快速複用;這一步解決的核心問題是【複用】

  業務的服務化:站在企業的角度,把企業職能抽象成 可複用、可組裝的服務;把原先職能化的企業架構轉變爲服務化的企業架構,進一步提升企業的對外服務能力;“前面兩步都是從技術層面來解決系統調用、系統功能複用的問題”。第三步,則是以業務驅動把一個業務單元封裝成一項服務。這一步解決的核心問題是【高效】

微服務

  把應用功能性分解爲一組服務的的架構風格。

優點

  • 易於開發和維護:一個微服務只會關注一個特定的業務功能,所以業務清晰、代碼量較少。開發和維護單個微服務相對簡單。
  • 單個微服務啓動較快
  • 局部修改容易部署:單體應用只要有修改,就得重新部署整個應用。微服務解決了這樣的問題。一般來說,對某個微服務進行修改,只需要重新部署這個服務即可。
  • 技術棧不受限制:在微服務架構中,可以結合項目業務及團隊的特點,合理的選擇技術棧。
  • 按需伸縮:可根據需求,實現細粒度的擴展。

缺點

  • 運維要求高:更多的服務意味着要投入更多的運維。
  • 分佈式固有的複雜性:使用微服務構建的是分佈式系統。對於一個分佈式系統,系統容錯、網絡延遲、分佈式事務等都會帶來巨大的問題。
  • 接口調整成本高:微服務之間通過接口進行通信。如果修改某一個微服務的API,可能所有用到這個接口的微服務都需要進行調整。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章