單體架構的優缺點


單體架構的好處

1.應用開發簡單
2.易於對應用程序進行大規模的更改
3.測試相對簡單直觀
4.部署簡單明了
5.橫向擴展容易

單體架構的壞處

1.過度的復雜度

  系統本身過於龐大和復雜,以至於任何一個開發者都很難以理解它的全部。

  這種極度的復雜度會形成惡性循環,由於代碼難以理解,因此開發人員更改更容易出錯,每一次更改系統更復雜,更難懂。

2.開發速度緩慢

  因為應用太大,每啟動一次都需要很長的時間,因此從編輯到構建、運行再到測試這個周期花費的時間越來越長。

3.代碼部署的周期很長,而且容易出問題

  程序更改部署到生產環境的時間變得更長.

  代碼庫復雜,以至於一個更改可能引起的影響是未知的。

  開發團隊分為多個小組,當需要發布的時候漫長的合並和測試時間非常長。

4.難以擴展

  不能做到按需擴展,只能是擴展整個系統。

5.交付可靠的單體應用是一項挑戰

  單體程序缺乏可靠性,這個問題導致了頻繁的系統故障和宕機。

  應用程序缺乏故障隔離,因為所有模塊都運行在同一個進程當中

6.需要長期以來某一個可能已經過時的技術棧

  團隊長期使用一套相同的技術,單體架構使得采用新的框架和編程語言變的及其困難。

微服務架構

1.x軸: 多個相通實例之間實現請求的負載均衡
2.Y軸: 根據功能將應用程序拆分成服務
3.Z軸: 根據請求的屬性路由請求


X軸:多個相通實例之間實現請求的負載均衡

  在負載均衡器之后運行應用程序的多個實例,負載均衡器在N個相同的實例之間分配請求,這是提高應用程序吞吐量和可用性的好方法.


Z軸: 根據請求的屬性路由請求

  不同於X軸,Z軸根據請求當中的某一個條件來路由請求。下面例子中每個應用程序負責一部分id的用戶。對於應用程序需要處理增加的事務和數據量時,Z軸擴展是一種很好的擴展方式.



Y軸: 根據功能將應用程序拆分成服務

  X軸和Z軸擴展有效地提升了應用程序的吞吐量和可用性,然而這兩種方式都沒有解決日益增長的開發問題和應用復雜性。所以我們需要采用Y軸擴展,也就是功能分解,把一個單體應用分成一組服務。




微服務定義:把應用程序功能性分解為一組服務的架構風格


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM