單體架構與微服務的區別
單體架構
什麼是單體架構
單體架構也叫做單體系統。是把所有功能、模塊耦合在一個系統裏。例如mvc系統。
單體架構的特點
1.打包部署時打成一個獨立的單元,例如jar包、war包。
2.整套系統只有一個進程。(最大特點)
單體架構的缺點
測試部署問題
測試部署成本高:任何程序改變,需要把整個系統重新部署。
伸縮性
可伸縮性差:單進程侷限性使系統在水平擴展的時只能基於整個系統擴展,無法針對某一功能模塊按需擴展。例如:電商系統包含用戶、商品、訂單、交易、支付模塊。無法做到只對商品單個模塊做集羣。
可靠性
可靠性差:單體系統中某一個模塊出現bug例如:死循環、內存溢出,會導致整個進程宕機,影響整個系統。
系統迭代
每個功能迭代後合併非常麻煩
跨語言程度
整個系統統一的技術棧,管理起來看似簡單。但有時候統一標準並不一定適用於所有實際情況。例如某些適用場景java不一定比其他語言好。
團隊協作
整個系統一個團隊,如果系統變得龐大,成員就需要學習大量代碼和領域知識,團隊內溝通和協作也會變得低效。
微服務架構
什麼是微服務架構
微服務是一種架構風格,簡單的說就是把一個獨立系統拆分成多個小型服務,每個服務獨立部署,服務之間使用RESTful API進行通信協作。每個服務高內聚(體現在每個服務只做一件事),服務之間低耦合。
微服務架構的特點
1.將“巨石”服務,解耦成簡單獨立服務
2.獨立進程
3.服務間通信簡單
微服務架構的優缺點
測試部署問題
測試部署成本低:每個微服務組件都是簡單靈活的,能夠獨立部署。
伸縮性
可伸縮性好每個微服務都是高內聚,服務之間低耦合很容易按服務進行擴展。例如:電商系統包含用戶、商品、訂單、交易、支付模塊。無法做到只對商品單個模塊做集羣。
可靠性
可靠性差:單體系統中某一個模塊出現bug例如:死循環、內存溢出,會導致整個進程宕機,影響整個系統。
系統迭代
每個功能迭代後合併非常麻煩
跨語言程度
整個系統統一的技術棧,管理起來看似簡單。但有時候統一標準並不一定適用於所有實際情況。例如某些適用場景java不一定比其他語言好。