Spring Cloud作為一套微服務(wù)治理的框架,幾乎考慮到了微服務(wù)治理的方方面面,之前也寫過(guò)一些關(guān)于Spring Cloud文章,主要偏重各組件的使用,本次分享主要解答這兩個(gè)問(wèn)題:Spring Cloud在微服務(wù)的架構(gòu)中都做了哪些事情?Spring Cloud提供的這些功能對(duì)微服務(wù)的架構(gòu)提供了怎樣的便利?
傳統(tǒng)架構(gòu)發(fā)展史
單體架構(gòu)
單體架構(gòu)在小微企業(yè)比較常見,典型代表就是一個(gè)應(yīng)用、一個(gè)數(shù)據(jù)庫(kù)、一個(gè)web容器就可以跑起來(lái),比如我們開發(fā)的開源軟件云收藏,就是標(biāo)準(zhǔn)的單體架構(gòu)。
在兩種情況下可能會(huì)選擇單體架構(gòu):一是在企業(yè)發(fā)展的初期,為了保證快速上線,采用此種方案較為簡(jiǎn)單靈活;二是傳統(tǒng)企業(yè)中垂直度較高,訪問(wèn)壓力較小的業(yè)務(wù)。在這種模式下對(duì)技術(shù)要求較低,方便各層次開發(fā)人員接手,也能滿足客戶需求。
下面是單體架構(gòu)的架構(gòu)圖:
在單體架構(gòu)中,技術(shù)選型非常靈活,優(yōu)先滿足快速上線的要求,也便于快速跟進(jìn)市場(chǎng)。
垂直架構(gòu)
在單體架構(gòu)發(fā)展一段時(shí)間后,公司的業(yè)務(wù)模式得到了認(rèn)可,交易量也慢慢的大起來(lái),這時(shí)候有些企業(yè)為了應(yīng)對(duì)更大的流量,就會(huì)對(duì)原有的業(yè)務(wù)進(jìn)行拆分,比如說(shuō):后臺(tái)系統(tǒng)、前端系統(tǒng)、交易系統(tǒng)等。
在這一階段往往會(huì)將系統(tǒng)分為不同的層級(jí),每個(gè)層級(jí)有對(duì)應(yīng)的職責(zé),UI層負(fù)責(zé)和用戶進(jìn)行交互、業(yè)務(wù)邏輯層負(fù)責(zé)具體的業(yè)務(wù)功能、數(shù)據(jù)庫(kù)層負(fù)責(zé)和上層進(jìn)行數(shù)據(jù)交換和存儲(chǔ)。
下面是垂直架構(gòu)的架構(gòu)圖:
在這個(gè)階段SSH(struts+spring+hibernate)是項(xiàng)目的關(guān)鍵技術(shù),Struts負(fù)責(zé)web層邏輯控制、Spring負(fù)責(zé)業(yè)務(wù)層管理Bean、Hibernate負(fù)責(zé)數(shù)據(jù)庫(kù)操作進(jìn)行封裝,持久化數(shù)據(jù)。
服務(wù)化架構(gòu)
如果公司進(jìn)一步的做大,垂直子系統(tǒng)會(huì)變的越來(lái)越多,系統(tǒng)和系統(tǒng)之間的調(diào)用關(guān)系呈指數(shù)上升的趨勢(shì)。在這樣的背景下,很多公司都會(huì)考慮服務(wù)的SOA化。SOA代表面向服務(wù)的架構(gòu),將應(yīng)用程序根據(jù)不同的職責(zé)劃分為不同的模塊,不同的模塊直接通過(guò)特定的協(xié)議和接口進(jìn)行交互。這樣使整個(gè)系統(tǒng)切分成很多單個(gè)組件服務(wù)來(lái)完成請(qǐng)求,當(dāng)流量過(guò)大時(shí)通過(guò)水平擴(kuò)展相應(yīng)的組件來(lái)支撐,所有的組件通過(guò)交互來(lái)滿足整體的業(yè)務(wù)需求。
SOA服務(wù)化的優(yōu)點(diǎn)是,它可以根據(jù)需求通過(guò)網(wǎng)絡(luò)對(duì)松散耦合的粗粒度應(yīng)用組件進(jìn)行分布式部署、組合和使用。服務(wù)層是SOA的基礎(chǔ),可以直接被應(yīng)用調(diào)用,從而有效控制系統(tǒng)中與軟件代理交互的人為依賴性。
服務(wù)化架構(gòu)是一套松耦合的架構(gòu),服務(wù)的拆分原則是服務(wù)內(nèi)部高內(nèi)聚,服務(wù)之間低耦合。
下面是服務(wù)化架構(gòu)圖:
在這個(gè)階段可以使用WebService或者dubbo來(lái)服務(wù)治理。源碼來(lái)源