單體架構與微服務的區別

單體架構

什麼是單體架構

單體架構也叫做單體系統。是把所有功能、模塊耦合在一個系統裏。例如mvc系統。

單體架構的特點

1.打包部署時打成一個獨立的單元,例如jar包、war包。
2.整套系統只有一個進程。(最大特點)

單體架構的缺點

測試部署問題

測試部署成本高:任何程序改變,需要把整個系統重新部署。

伸縮性

可伸縮性差:單進程侷限性使系統在水平擴展的時只能基於整個系統擴展,無法針對某一功能模塊按需擴展。例如:電商系統包含用戶、商品、訂單、交易、支付模塊。無法做到只對商品單個模塊做集羣。

可靠性

可靠性差:單體系統中某一個模塊出現bug例如:死循環、內存溢出,會導致整個進程宕機,影響整個系統。

系統迭代

每個功能迭代後合併非常麻煩

跨語言程度

整個系統統一的技術棧,管理起來看似簡單。但有時候統一標準並不一定適用於所有實際情況。例如某些適用場景java不一定比其他語言好。

團隊協作

整個系統一個團隊,如果系統變得龐大,成員就需要學習大量代碼和領域知識,團隊內溝通和協作也會變得低效。

微服務架構

什麼是微服務架構

微服務是一種架構風格,簡單的說就是把一個獨立系統拆分成多個小型服務,每個服務獨立部署,服務之間使用RESTful API進行通信協作。每個服務高內聚(體現在每個服務只做一件事),服務之間低耦合。

微服務架構的特點

1.將“巨石”服務,解耦成簡單獨立服務
2.獨立進程
3.服務間通信簡單

微服務架構的優缺點

測試部署問題

測試部署成本低:每個微服務組件都是簡單靈活的,能夠獨立部署。

伸縮性

可伸縮性好每個微服務都是高內聚,服務之間低耦合很容易按服務進行擴展。例如:電商系統包含用戶、商品、訂單、交易、支付模塊。無法做到只對商品單個模塊做集羣。

可靠性

可靠性差:單體系統中某一個模塊出現bug例如:死循環、內存溢出,會導致整個進程宕機,影響整個系統。

系統迭代

每個功能迭代後合併非常麻煩

跨語言程度

整個系統統一的技術棧,管理起來看似簡單。但有時候統一標準並不一定適用於所有實際情況。例如某些適用場景java不一定比其他語言好。

團隊協作

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