單體架構和微服務架構的優缺點

一.單體架構
單體架構就是把所有的業務模塊編寫在一個項目中,最終會打包成一個war,然後進行部署運行
單體服務架構如下:
在這裏插入圖片描述
單體架構的優點:
1.部署簡單:由於是完整的結構體,可以直接部署在一個服務器上即可
2.技術單一:項目不需要複雜的技術棧,往往一套熟悉的技術棧就可以完成開發
3.用人成本低:單個程序員可以完成業務接口到數據庫的整個流程

單體架構的缺點:
1.系統啓動慢,一個進程包含了所有的業務邏輯,涉及到的啓動模塊過多,導致系統的啓動,重啓週期邊長;
2.系統錯誤隔離性差,可用性差,任何一個模塊的錯誤可能導致整個系統的宕機;
3.可伸縮性差,系統的擴容只能對整個應用擴容,不能做到對整個功能點進行擴容;
4.線上問題修復時間長,任何一個線上問題修復需要對整個應用系統進行全面升級;

二.微服務架構
微服務架構是一種將一個單一應用程序開發爲一組小型服務的方法,每個服務運行在自己的進程中,服務間通信採用的輕量級通信機制(通常用HTTP資源API),這些服務圍繞業務能力構建並且可通過全自動部署機制獨立部署。這些服務公用一個最小型的集中式的管理,服務可用不同的語言進行開發,使用不同的數據儲存技術。

Spring Cloud並不是一個項目,它是一套項目的組合,Spring Cloud中存在很多的子項目,每個子項目都是針對微服務系統架構存在的問題給出的一種解決方案。Spring Cloud是基於Spring Boot實現的,並且Spring Cloud沒有重複的造輪子,它只是將目前各家公司開發的比較成熟的經得起考驗的服務

微服務架構圖如下:
在這裏插入圖片描述
微服務的優點:
1.易於開發和維護:一個服務只關注一個特定的業務功能,所以它業務清晰,代碼量少。開發和維護單個微服務相當簡單。而整個應用是若干個微服務構建而成的,所以整個應用在被維持在一個可控的狀態;
2.單個服務啓動快:單個服務代碼量少,所以啓動快;
3.局部修改易部署:單個應用只要有修改,就得重新部署整個應用,微服務解決了這個問題。一般來說,對某個微服務進行修改,只需要重新部署這個服務即可;
4.技術棧不受限:在微服務架構中,可以結合業務和團隊的特點,合理選用技術棧。例如有些服務可以使用關係型數據庫Mysql,有的服務可以使用非關係型數據庫redis。甚至可根據需求,部分服務使用JAVA開發,部分微服務使用Node.js開發
5.按需收縮:可根據需求,實現細粒度的擴展。例如,系統中的某個微服務遇到了瓶頸,可以結合微服務的特點,增加內存,升級CPU或增加節點。

微服務的缺點:
運維要求高:更多的服務意味着更多的運維投入。在單體架構中,只需要保證一個應用的運行即可,在微服務中,需要保證幾十甚至幾百個服務器正常運行和協作,這給運維帶來了巨大的挑戰;
分戶式固有的複雜性:使用微服務架構的是分佈式系統。對於一個分佈式系統,系統容錯,網絡延遲都會帶來巨大挑戰。
接口調整成本高:微服務之間通過接口進行通信

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章