單體應用架構存在的問題,以及解決方案

什麼是單體架構

一個歸檔包(例如war格式)包含所有功能的應用程序,通常稱爲單體應用,而架構單體應用的方法論,就是單體應用架構

單體架構存在的問題

  1. 複雜性高:單體應用整個項目包含的模塊非常多,模塊的邊界模糊,依賴關係不明確,代碼質量參差不齊
  2. 技術債務:隨着時間的推移,需求變更和人員迭代,會逐漸形成應用程序的技術債務,並且越積越多
  3. 部署頻率低:隨着代碼增多,構建和部署的時間也會增多,每次部署都要重新部署整個項目
  4. 可靠性差:某個應用有bug,可能會導致整個應用崩潰
  5. 擴展能力受限:單體應用只能作爲一個整體應用進行擴展,無法根據業務模塊的需要進行伸縮
  6. 阻礙技術創新:單體應用往往使用的技術平臺或方案解決所有的問題,團隊中的每個成員都必須使用相同的額開發語言和架構

如何解決單體應用架構的問題

微服務架構可以有效解決上面的問題

什麼是微服務架構

微服務架構就是一種將單一應用程序開發爲一組小型服務的方法,每個服務運行在自己的進程中,服務間採用輕量級通信機制(通常用http資源api),這些服務圍繞業務能力構建並且可通過全自動部署機制獨立部署

特性:

  • 每個微服務可獨立運行在自己的進程中
  • 一系列獨立運行的微服務共同構建起整個系統
  • 每個服務爲獨立的業務開發,一個微服務只關注某個特定的功能
  • 微服務之間通過一個輕量的通信機制進行通信,例如通過restful api進行調用
  • 可以使用不同的語言與數據存儲技術
  • 全自動的部署機制

優點

  • 易於開發和維護
  • 單個微服務啓動較快
  • 局部修改容易部署
  • 技術棧不受限
  • 按需伸縮

挑戰

  • 運維要求較高
  • 分佈式固有的複雜性:使用微服務構建的分佈式系統,對於一個分佈式狎鷗亭泡麪哥,系統容錯,網絡延遲,分佈式事務等都會帶來巨大的挑戰
  • 接口調整成本高:微服務直接使用接口通信,一個接口的修改,可能涉及到所有和這接口有關的都得做修改
  • 重複勞動:很多服務可能都使用到了相同的功能,而這個功能並沒有達到分解爲一個微服務的程度,這個時候,可能各個服務都會開發這一個功能(可以使用共享庫來解決這個問題,比如將重複的功能封裝成公共組件,但是注意多語言環境可能行不通)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章