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