1. 程式人生 > >單體應用架構和微服務架構的區別

單體應用架構和微服務架構的區別

一、單體應用架構概念

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

二、單體架構示意圖

 

三、單體應用架構的優缺點

1. 優點

  • 便於共享:單個歸檔檔案包含所有功能,便於在團隊之間以及不同的部署階段之間共享。
  • 易於測試:單體應用一旦部署,所有的服務或特性就都可以使用了,這簡化了測試過程,因為沒有額外的依賴,每項測試都可以在部署完成後立刻開始。
  • 易於部署:只需將單個歸檔檔案複製到單個目錄下。

2. 缺點

  • 複雜性高:由於是單個歸檔檔案,所以整個專案檔案包含的模組非常多,導致模組的邊界模糊、依賴關係不清晰、程式碼的質量參差不齊,混亂的堆在一起,使得整個專案非常複雜。以致每次修改程式碼,都非常小心,可能新增一個簡單的功能,或者修改一個Bug都會帶來隱藏的缺陷。
  • 技術債務:隨著時間的推移、需求的變更和技術人員的更替,會逐漸形成應用程式的技術債務,並且越積越多。
  • 擴充套件能力受限:單體應用只能作為一個整體進行擴充套件,無法根據業務模組的需要進行伸縮。
  • 阻礙技術創新:對於單體應用來說,技術是在開發之前經過慎重評估後選定的,每個團隊成員都必須使用相同的開發語言、持久化儲存及訊息系統。
  • 因單體應用部署在一臺伺服器上,很容易出現系統負載過重,記憶體洩漏等問題,而且出現該種問題由於1)的原因,並不好修改。

四、微服務架構概念

      微服務架構風格是一種將一個單一應用程式開發為一組小型服務的方法,每個服務執行在自己的程序中,服務間通訊採用輕量級通訊機制。這些服務圍繞業務能力構建並且可通過全自動部署機制獨立部            署。這些服務共用一個最小型的集中式的管理,服務可用不同的語言開發,使用不同的資料儲存技術。

五、微服務架構示意圖

六、微服務架構的優缺點

1. 優點

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

2. 缺點

  • 運維要求高:更多的服務意味著要投入更多的運維。
  • 分散式固有的複雜性:使用微服務構建的是分散式系統。對於一個分散式系統,系統容錯、網路延遲、分散式事務等都會帶來巨大的問題。
  • 介面調整成本高:微服務之間通過介面進行通訊。如果修改某一個微服務的API,可能所有用到這個介面的微服務都需要進行調整。

看到CSDN上這位兄弟寫的不錯,略微加了點實踐中自己的感受。 

轉載地址:https://blog.csdn.net/qinaye/article/details/82840625