更新時(shí)間:2021-09-29 08:06:58 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1768次
配置
服務(wù)發(fā)現(xiàn)
斷路器
路由和消息傳遞
API網(wǎng)關(guān)
追蹤
CI 管道和測(cè)試
Spring Cloud 配置組件為分布式系統(tǒng)中的外化配置提供服務(wù)器端和客戶端支持。我們可以使用配置服務(wù)器為所有環(huán)境中的應(yīng)用程序管理外部屬性。Spring Cloud 配置服務(wù)器可以使用 Git、SVN(Apache Subversion)、文件系統(tǒng)和 Vault 來存儲(chǔ)配置。配置客戶端(微服務(wù)應(yīng)用程序)在啟動(dòng)時(shí)從服務(wù)器檢索配置客戶端。

服務(wù)發(fā)現(xiàn)是通過網(wǎng)絡(luò)自動(dòng)檢測(cè)設(shè)備和服務(wù)。換句話說,服務(wù)發(fā)現(xiàn)是應(yīng)用程序和微服務(wù)在分布式環(huán)境中的連接方式。服務(wù)發(fā)現(xiàn)實(shí)現(xiàn)包括:
在中央服務(wù)器維護(hù)地址的全局視圖。
連接到中央服務(wù)器的客戶端可以更新和檢索地址。
有兩種發(fā)現(xiàn)模式:客戶端發(fā)現(xiàn)和服務(wù)器端發(fā)現(xiàn)。
客戶端發(fā)現(xiàn):在客戶端發(fā)現(xiàn)中,客戶端負(fù)責(zé)確定可用服務(wù)的網(wǎng)絡(luò)位置??蛻舳耸褂秘?fù)載平衡算法來選擇可用服務(wù)之一并發(fā)出請(qǐng)求。Netflix OSS是客戶端發(fā)現(xiàn)模式的一個(gè)示例。
服務(wù)器端發(fā)現(xiàn):在服務(wù)器端發(fā)現(xiàn)中,客戶端通過負(fù)載均衡器向服務(wù)發(fā)出 HTTP 請(qǐng)求。負(fù)載均衡器聯(lián)系服務(wù)注冊(cè)中心并將每個(gè)請(qǐng)求路由到可用的服務(wù)實(shí)例。與客戶端發(fā)現(xiàn)類似,服務(wù)實(shí)例在服務(wù)注冊(cè)表中注冊(cè)和注銷。的AWS ELB(彈性負(fù)載均衡)是服務(wù)器端發(fā)現(xiàn)的一個(gè)例子。ELB 平衡來自互聯(lián)網(wǎng)的外部流量。
Netflix 創(chuàng)建了一個(gè)名為Hystrix的庫(kù)。它實(shí)現(xiàn)了斷路器模式。斷路器計(jì)算何時(shí)打開和關(guān)閉電路以及在發(fā)生故障時(shí)該怎么做。當(dāng)所有服務(wù)在某個(gè)時(shí)刻出現(xiàn)故障時(shí),斷路器會(huì)優(yōu)雅地處理這些故障。斷路器具有三種狀態(tài):OPEN、CLOSED和HALF-OPEN狀態(tài)。

CLOSED 狀態(tài):如果斷路器處于 CLOSED 狀態(tài)并且所有調(diào)用都傳遞到供應(yīng)商微服務(wù)。它沒有任何延遲地響應(yīng)。

OPEN 狀態(tài):斷路器返回錯(cuò)誤調(diào)用而不執(zhí)行函數(shù)。

HALF-OPEN 狀態(tài):當(dāng)函數(shù)執(zhí)行超時(shí)時(shí),電路變?yōu)?HALF-OPEN 狀態(tài)。它測(cè)試潛在的問題是否仍然存在。它是一種監(jiān)測(cè)和反饋機(jī)制。它會(huì)嘗試調(diào)用供應(yīng)商微服務(wù)以檢查其是否已恢復(fù)。如果對(duì)供應(yīng)商的呼叫超時(shí),則電路保持在OPEN狀態(tài)。如果調(diào)用返回成功,電路切換到CLOSED狀態(tài)。在HALF-OPEN狀態(tài)期間,斷路器將所有外部調(diào)用返回給服務(wù)并出現(xiàn)錯(cuò)誤。

云應(yīng)用程序由許多微服務(wù)組成,因此通信至關(guān)重要。Spring Cloud 支持通過消息或 HTTP 請(qǐng)求進(jìn)行通信。路由使用Netflix Ribbon和Open Feign,而消息傳遞使用 Kafka 或 Rabbit MQ。

API Gateway 允許我們路由 API 請(qǐng)求(外部或內(nèi)部)以連接服務(wù)。它還提供了一個(gè)用于在 Spring MVC 之上構(gòu)建 API 網(wǎng)關(guān)的庫(kù)。它的目標(biāo)是為他們提供跨領(lǐng)域的關(guān)注,例如安全和監(jiān)控。
API網(wǎng)關(guān)的特點(diǎn)
基于 Spring 框架 5、項(xiàng)目反應(yīng)器和 Spring Boot 2.0
能夠在任何請(qǐng)求的屬性上匹配路由
謂詞和過濾器特定于路由
Hystrix 斷路器集成
Spring Cloud Discovery 客戶端集成
易于編寫謂詞和過濾器
請(qǐng)求速率限制
路徑重寫
Spring Cloud 的其他功能是分布式跟蹤。跟蹤是從應(yīng)用程序獲取數(shù)據(jù)的單個(gè)請(qǐng)求。跟蹤導(dǎo)致對(duì)各種微服務(wù)的請(qǐng)求數(shù)量呈指數(shù)級(jí)增長(zhǎng)。
我們可以在我們的項(xiàng)目中添加Spring Cloud Sleuth庫(kù)來啟用跟蹤。Sleuth 負(fù)責(zé)記錄時(shí)間,用于延遲分析。我們可以將此時(shí)序?qū)С龅?Zipkin。
Zipkin 是一個(gè)分布式追蹤工具,專門用于分析微服務(wù)架構(gòu)內(nèi)部的延遲問題。它公開用于收集輸入數(shù)據(jù)的 HTTP 端點(diǎn)。如果我們需要在我們的項(xiàng)目中添加跟蹤,我們應(yīng)該添加spring-cloud-starter-zipkin依賴項(xiàng)。
在微服務(wù)中,輸入的流量如此之大,所以我們不能只收集一定數(shù)量的數(shù)據(jù)。為此,Spring Cloud Sleuth 提供了一個(gè)采樣策略。采樣策略允許我們將多少輸入流量發(fā)送到 Zipkin 進(jìn)行分析。要啟用此功能,我們必須添加spring-cloud-sleuth-stream依賴項(xiàng)。
Spring Cloud 管道是 Jenkins 和 Concourse 的一個(gè)自以為是的(自我重要的)管道,它為應(yīng)用程序自動(dòng)創(chuàng)建管道。在各種服務(wù)中構(gòu)建、測(cè)試和部署對(duì)于成功的云原生應(yīng)用程序至關(guān)重要。
Jenkins 管道提供了一組工具,旨在將簡(jiǎn)單和更高級(jí)的交付管道建模為代碼。管道的定義被寫入一個(gè)名為 Jenkinsfile 的文本文件中。
管道有兩種語法:聲明式和腳本式管道。這些語法分為兩部分:步驟和階段。步驟是管道的基本部分,因?yàn)樗鼈兏嬖V Jenkins 服務(wù)器要做什么。階段是管道的主要部分。階段在邏輯上將幾個(gè)步驟組合在一起,這些步驟顯示在管道的結(jié)果屏幕上。
如果想了解更多相關(guān)知識(shí),大家不妨來關(guān)注一下動(dòng)力節(jié)點(diǎn)的SpringCloud教程,教程內(nèi)容全面,適合初學(xué)者的小白學(xué)習(xí),希望對(duì)大家能有所幫助哦。
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)