一、單體架構
單體架構:將業(yè)務的所有功能集中在一個項目中開發(fā),打包成一個包部署。
單體架構的優(yōu)缺點如下:
優(yōu)點:架構簡單、部署成本低
缺點:耦合度高(維護困難、升級困難)
二、分布式架構
分布式架構:根據業(yè)務功能對系統(tǒng)做拆分,每一個業(yè)務功能模塊單獨作為獨立項目開發(fā),成為一個服務。
分布式架構的優(yōu)缺點:
優(yōu)點:降低服務耦合、有利于服務升級和拓展
缺點:服務調用關系錯綜復雜
分布式架構雖然降低了服務耦合,但是服務拆分時也有很多的問題需要思考:
服務拆分的粒度如何界定?服務之間如何調用?服務的調用關系如何管理?
大家需要定制一套行之有效的標準來約束分布式架構。
三、微服務
微服務的架構特征:
單一職責:微服務拆分粒度更小,每一個服務都對應唯一的業(yè)務能力,做到單一職責。自治:團隊獨立、技術獨立、數(shù)據獨立、獨立部署和交付面向服務:服務提供統(tǒng)一標準的接口,與語言和技術無關隔離性強:服務調用做好隔離、容錯、降級,避免出現(xiàn)級聯(lián)問題
微服務的上述特性其實是在給分布式架構定制一個標準,進一步降低服務之間的耦合度,提供服務的獨立性和靈活性。做到高內聚,低耦合。
因此,我們可以認為微服務是一種經過良好架構設計的分布式架構方案。
但方案怎么落地呢?選用什么樣的技術棧?全球的互聯(lián)網公司都在積極的嘗試自己的微服務落地方案。
其中Java領域,最引人注目的就是SpringCloud提供的方案了。
四、SpringCloud
SpringCloud是目前國內使用最廣泛的微服務框架。
官網地址:https://spring.io/projects/spring-cloud
SpringCloud集成了各種微服務功能組件,并基于SpringBoot實現(xiàn)了這些組件的自動裝配,從而提供了良好的開箱即用體驗。
總結:
單體架構:簡單方便、高度耦合,擴展性差,適合小型項目。比如:學生管理系統(tǒng)。
分布式架構:松耦合,擴展性好,但是架構復雜,難度大。適合大型互聯(lián)網項目,比如:京東、淘寶。
微服務:一種良好的分布式架構方案。拆分粒度更小、服務更獨立、耦合度更低.但是架構非常復雜,運維、監(jiān)控、部署難度較高。
SpringCloud是微服務架構的一站式解決方案,集成了各種優(yōu)秀微服務功能組件。