更新時間:2021-09-29 08:06:58 來源:動力節(jié)點 瀏覽1516次
配置
服務(wù)發(fā)現(xiàn)
斷路器
路由和消息傳遞
API網(wǎng)關(guān)
追蹤
CI 管道和測試
Spring Cloud 配置組件為分布式系統(tǒng)中的外化配置提供服務(wù)器端和客戶端支持。我們可以使用配置服務(wù)器為所有環(huán)境中的應(yīng)用程序管理外部屬性。Spring Cloud 配置服務(wù)器可以使用 Git、SVN(Apache Subversion)、文件系統(tǒng)和 Vault 來存儲配置。配置客戶端(微服務(wù)應(yīng)用程序)在啟動時從服務(wù)器檢索配置客戶端。
服務(wù)發(fā)現(xiàn)是通過網(wǎng)絡(luò)自動檢測設(shè)備和服務(wù)。換句話說,服務(wù)發(fā)現(xiàn)是應(yīng)用程序和微服務(wù)在分布式環(huán)境中的連接方式。服務(wù)發(fā)現(xiàn)實現(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ā)出請求。Netflix OSS是客戶端發(fā)現(xiàn)模式的一個示例。
服務(wù)器端發(fā)現(xiàn):在服務(wù)器端發(fā)現(xiàn)中,客戶端通過負(fù)載均衡器向服務(wù)發(fā)出 HTTP 請求。負(fù)載均衡器聯(lián)系服務(wù)注冊中心并將每個請求路由到可用的服務(wù)實例。與客戶端發(fā)現(xiàn)類似,服務(wù)實例在服務(wù)注冊表中注冊和注銷。的AWS ELB(彈性負(fù)載均衡)是服務(wù)器端發(fā)現(xiàn)的一個例子。ELB 平衡來自互聯(lián)網(wǎng)的外部流量。
Netflix 創(chuàng)建了一個名為Hystrix的庫。它實現(xiàn)了斷路器模式。斷路器計算何時打開和關(guān)閉電路以及在發(fā)生故障時該怎么做。當(dāng)所有服務(wù)在某個時刻出現(xiàn)故障時,斷路器會優(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):斷路器返回錯誤調(diào)用而不執(zhí)行函數(shù)。
HALF-OPEN 狀態(tài):當(dāng)函數(shù)執(zhí)行超時時,電路變?yōu)?HALF-OPEN 狀態(tài)。它測試潛在的問題是否仍然存在。它是一種監(jiān)測和反饋機制。它會嘗試調(diào)用供應(yīng)商微服務(wù)以檢查其是否已恢復(fù)。如果對供應(yīng)商的呼叫超時,則電路保持在OPEN狀態(tài)。如果調(diào)用返回成功,電路切換到CLOSED狀態(tài)。在HALF-OPEN狀態(tài)期間,斷路器將所有外部調(diào)用返回給服務(wù)并出現(xiàn)錯誤。
云應(yīng)用程序由許多微服務(wù)組成,因此通信至關(guān)重要。Spring Cloud 支持通過消息或 HTTP 請求進(jìn)行通信。路由使用Netflix Ribbon和Open Feign,而消息傳遞使用 Kafka 或 Rabbit MQ。
API Gateway 允許我們路由 API 請求(外部或內(nèi)部)以連接服務(wù)。它還提供了一個用于在 Spring MVC 之上構(gòu)建 API 網(wǎng)關(guān)的庫。它的目標(biāo)是為他們提供跨領(lǐng)域的關(guān)注,例如安全和監(jiān)控。
API網(wǎng)關(guān)的特點
基于 Spring 框架 5、項目反應(yīng)器和 Spring Boot 2.0
能夠在任何請求的屬性上匹配路由
謂詞和過濾器特定于路由
Hystrix 斷路器集成
Spring Cloud Discovery 客戶端集成
易于編寫謂詞和過濾器
請求速率限制
路徑重寫
Spring Cloud 的其他功能是分布式跟蹤。跟蹤是從應(yīng)用程序獲取數(shù)據(jù)的單個請求。跟蹤導(dǎo)致對各種微服務(wù)的請求數(shù)量呈指數(shù)級增長。
我們可以在我們的項目中添加Spring Cloud Sleuth庫來啟用跟蹤。Sleuth 負(fù)責(zé)記錄時間,用于延遲分析。我們可以將此時序?qū)С龅?Zipkin。
Zipkin 是一個分布式追蹤工具,專門用于分析微服務(wù)架構(gòu)內(nèi)部的延遲問題。它公開用于收集輸入數(shù)據(jù)的 HTTP 端點。如果我們需要在我們的項目中添加跟蹤,我們應(yīng)該添加spring-cloud-starter-zipkin依賴項。
在微服務(wù)中,輸入的流量如此之大,所以我們不能只收集一定數(shù)量的數(shù)據(jù)。為此,Spring Cloud Sleuth 提供了一個采樣策略。采樣策略允許我們將多少輸入流量發(fā)送到 Zipkin 進(jìn)行分析。要啟用此功能,我們必須添加spring-cloud-sleuth-stream依賴項。
Spring Cloud 管道是 Jenkins 和 Concourse 的一個自以為是的(自我重要的)管道,它為應(yīng)用程序自動創(chuàng)建管道。在各種服務(wù)中構(gòu)建、測試和部署對于成功的云原生應(yīng)用程序至關(guān)重要。
Jenkins 管道提供了一組工具,旨在將簡單和更高級的交付管道建模為代碼。管道的定義被寫入一個名為 Jenkinsfile 的文本文件中。
管道有兩種語法:聲明式和腳本式管道。這些語法分為兩部分:步驟和階段。步驟是管道的基本部分,因為它們告訴 Jenkins 服務(wù)器要做什么。階段是管道的主要部分。階段在邏輯上將幾個步驟組合在一起,這些步驟顯示在管道的結(jié)果屏幕上。
如果想了解更多相關(guān)知識,大家不妨來關(guān)注一下動力節(jié)點的SpringCloud教程,教程內(nèi)容全面,適合初學(xué)者的小白學(xué)習(xí),希望對大家能有所幫助哦。
初級 202925
初級 203221
初級 202629
初級 203743