springCloud的分布式架構(gòu)體系

Spring Cloud作為一套微服務(wù)治理的框架,幾乎考慮到了微服務(wù)治理的方方頁面。

1 傳統(tǒng)架構(gòu)發(fā)展史

1.1 單體架構(gòu)

應(yīng)用場景:小微企業(yè);

典型架構(gòu):一個(gè)應(yīng)用、一個(gè)數(shù)據(jù)庫、一個(gè)web容器;

選擇原因:快速上線,快速跟進(jìn)市場,簡單靈活;傳統(tǒng)企業(yè)垂直度較高,訪問壓力小,技術(shù)要求較低;

架構(gòu)圖:


單體架構(gòu)圖

2.1 垂直架構(gòu)

業(yè)務(wù)拆分:后臺(tái)系統(tǒng)、前端系統(tǒng)、交易系統(tǒng);

架構(gòu)圖:


垂直架構(gòu)圖

3.1 服務(wù)化架構(gòu)

面向服務(wù)(SOA):將應(yīng)用程序根據(jù)不同的職責(zé)劃分為不同的模塊,不同的模塊直接通過特定的協(xié)議和接口進(jìn)行交互;

服務(wù)特點(diǎn):服務(wù)內(nèi)部高內(nèi)聚,服務(wù)之間低耦合;

架構(gòu)圖:


服務(wù)化架構(gòu)圖


2 SOA和微服務(wù)架構(gòu)

2.1 SOA和微服務(wù)的區(qū)別

1、微服務(wù)業(yè)務(wù)系統(tǒng)需要徹底組件化和服務(wù)化,一個(gè)組件就是一個(gè)產(chǎn)品,可以獨(dú)立對(duì)外提供服務(wù);

2、微服務(wù)不再強(qiáng)調(diào)傳統(tǒng)SOA架構(gòu)里面比較重的ESB企業(yè)服務(wù)總線;

3、獨(dú)立的運(yùn)行空間;

4、采用HTTP Rest API;

5、切分粒度更小;

2.2 Spring Cloud

1、來源Spring,質(zhì)量、穩(wěn)定性、持續(xù)性都可以得到保證;
2、天然支持Spring Boot,更加便于業(yè)務(wù)落地;
3、發(fā)展非???;
4、Java領(lǐng)域最合適做微服務(wù)的框架;
5、周邊環(huán)境的支持力度最大;
6、使用門檻低;

2.3 Spring Cloud核心特性

1、分布式、版本化配置;
2、服務(wù)注冊(cè)和發(fā)現(xiàn);
3、路由;
4、服務(wù)和服務(wù)之間的調(diào)用;
5、負(fù)載均衡;
6、斷路器;
7、分布式消息傳遞;

3 微服務(wù)構(gòu)架

服務(wù)治理,將服務(wù)之間的直接依賴轉(zhuǎn)化為服務(wù)對(duì)服務(wù)中心的依賴;Spring Cloud核心組件Eureka用于解決這類問題。

3.1 Eureka

Eureka提供服務(wù)注冊(cè)和發(fā)現(xiàn),Eureka是一個(gè)服務(wù)中心,將所有的服務(wù)注冊(cè)到它這里來管理,其它各調(diào)用者需要的時(shí)候去注冊(cè)中心獲取,然后再進(jìn)行調(diào)用,避免了服務(wù)之間的直接調(diào)用,方便后續(xù)的水平擴(kuò)展、故障轉(zhuǎn)移。


服務(wù)調(diào)用示意圖

特點(diǎn):
1、注冊(cè)中心;
2、高可用性;
3、負(fù)載均衡;
4、故障轉(zhuǎn)移;

3.2 Hystrix

用于解決多個(gè)服務(wù)層調(diào)用,基礎(chǔ)服務(wù)的故障可能會(huì)導(dǎo)致級(jí)聯(lián)故障,進(jìn)而造成整個(gè)系統(tǒng)不可用的情況,即服務(wù)雪崩效應(yīng)。

Hystrix會(huì)在某個(gè)服務(wù)連續(xù)調(diào)用N次不響應(yīng)的情況下,立即通知調(diào)用端調(diào)用失敗,避免調(diào)用端持續(xù)等待而影響了整體服務(wù)。Hystrix間隔時(shí)間會(huì)再次檢查此服務(wù),如果服務(wù)恢復(fù)將繼續(xù)提供服務(wù)。

Hystrix-dashboard:對(duì)Hystrix進(jìn)行實(shí)時(shí)監(jiān)控;

Hystrix Turbine:匯總系統(tǒng)內(nèi)多個(gè)服務(wù)的數(shù)據(jù)并顯示;

3.3 配置中心

Spring Cloud Config 是一個(gè)解決分布式系統(tǒng)的配置管理方案。

Server:提供配置文件的存儲(chǔ)、以接口的形式將配置文件的內(nèi)容提供出去;

Client:通過接口獲取數(shù)據(jù)、并依據(jù)此數(shù)據(jù)初始化自己的應(yīng)用。

注意:運(yùn)行期間改變配置文件,服務(wù)不會(huì)得到最新的配置信息,需要在服務(wù)的運(yùn)行期間重新加載配置文件。

3.4 Spring Cloud Bus

解決N多的服務(wù)需要更新配置的問題。


工作流程圖


3.5 服務(wù)網(wǎng)關(guān)

通過引入 API Gateway 作為輕量級(jí)網(wǎng)關(guān),簡化前端的調(diào)用邏輯,同時(shí)API Gateway中也會(huì)實(shí)現(xiàn)相關(guān)的認(rèn)識(shí)認(rèn)證邏輯從而簡化內(nèi)部服務(wù)之間相互調(diào)用的復(fù)雜度。


服務(wù)網(wǎng)關(guān)

Zuul:提供動(dòng)態(tài)路由、監(jiān)控、彈性、安全等邊緣服務(wù)。它的具體作用是服務(wù)轉(zhuǎn)發(fā),接收并轉(zhuǎn)發(fā)所有內(nèi)外部的客戶端調(diào)用。使用Zuul可以作為資源的統(tǒng)一訪問入口,同時(shí)也可以在網(wǎng)關(guān)做一些權(quán)限檢驗(yàn)等類似的功能。

3.6 鏈路路口跟蹤

監(jiān)控服務(wù)和服務(wù)之間通訊的各項(xiàng)指標(biāo),這些數(shù)據(jù)將是我們改進(jìn)系統(tǒng)架構(gòu)的主要依據(jù)。

Spring Cloud Sleuth:為服務(wù)之間調(diào)用提供鏈路追蹤。通過Sleuth可以很清楚的了解到一個(gè)服務(wù)請(qǐng)求經(jīng)過了哪些服務(wù),每個(gè)服務(wù)處理花費(fèi)了多長時(shí)間。從而讓我們可以很方便的理清各微服務(wù)間的調(diào)用關(guān)系。

Zipkin:各個(gè)服務(wù)上的監(jiān)控?cái)?shù)據(jù),并提供查詢接口。


4 Spring Cloud構(gòu)架


組件配套

4.1 微服務(wù)架構(gòu)

1、Eureka負(fù)責(zé)服務(wù)的注冊(cè)與發(fā)現(xiàn);
2、Hystrix 負(fù)責(zé)監(jiān)控服務(wù)之間的調(diào)用情況,連續(xù)多次失敗進(jìn)行熔斷保護(hù);
3、Hystrix dashboard,Turbine 負(fù)責(zé)監(jiān)控 Hystrix的熔斷情況,并給予圖形化的展示;
4、Spring Cloud Config 提供了統(tǒng)一的配置中心服務(wù);
5、當(dāng)配置文件發(fā)生變化的時(shí)候,Spring Cloud Bus 負(fù)責(zé)通知各服務(wù)去獲取最新的配置信息;
6、所有對(duì)外的請(qǐng)求和服務(wù),我們都通過Zuul來進(jìn)行轉(zhuǎn)發(fā),起到API網(wǎng)關(guān)的作用;
7、監(jiān)控我們使用Sleuth+Zipkin+springAdmin將所有的請(qǐng)求數(shù)據(jù)記錄下來,方便我們進(jìn)行后續(xù)分析

原文:基于springCloud的分布式架構(gòu)體系

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容