更新時間:2022-10-10 09:35:05 來源:動力節(jié)點 瀏覽1573次
大家在學(xué)習(xí)Java的時候會學(xué)到Spring Cloud 教程,如果你去 Spring Cloud 的主頁,你會看到以下內(nèi)容:
Spring Cloud 為開發(fā)者提供了工具來快速構(gòu)建分布式系統(tǒng)中的一些常見模式(例如配置管理、服務(wù)發(fā)現(xiàn)、斷路器、智能路由、微代理、控制總線、一次性令牌、全局鎖、領(lǐng)導(dǎo)選舉、分布式會話,集群狀態(tài)) - Spring Cloud DocsSpring Cloud 不是一個單獨的項目,而是它們的一個集群。
下面顯示的只是這個保護傘下存在的項目的一小部分示例。
讓我們快速介紹一下 Spring Cloud 旗下的一些重要項目
Spring Cloud Netflix
Netflix 是最早使用微服務(wù)架構(gòu)的組織之一。在這個項目下,已經(jīng)有大量項目開源供公眾使用。Eureka、Hystrix 和 Zuul 是其中比較受歡迎的。
Spring Cloud 配置
該項目利用 Git 或 SVN 存儲庫為集中配置管理提供了一個框架。
Spring Cloud 總線
這使微服務(wù)和基礎(chǔ)設(shè)施組件能夠在分布式設(shè)置中相互通信。
現(xiàn)在讓我們看看我們在開發(fā)微服務(wù)應(yīng)用程序時面臨的挑戰(zhàn),以及 Spring Cloud 為它們提供的解決方案。
配置管理
在具有微服務(wù)架構(gòu)的系統(tǒng)中,存在大量相互通信的小型微服務(wù):
這些微服務(wù)中的每一個都需要跨多個環(huán)境執(zhí)行。在給定的環(huán)境中,可能會運行該微服務(wù)的多個實例。這意味著運維團隊需要為每個微服務(wù)管理大量配置信息。
Spring Cloud Config Server 為此類配置管理提供了解決方案
Spring Cloud 提供了一種方法,其中所有微服務(wù)的跨環(huán)境的所有配置都存儲在 Git 存儲庫中。Spring Cloud Config Server 然后將此信息公開給所有微服務(wù)。
將配置存儲在這樣一個集中的位置使運營團隊更容易管理應(yīng)用程序/架構(gòu)。
考慮以下示例。
CurrencyCalculationService 微服務(wù)與另一個微服務(wù) CurrencyExchangeService 進行通信。目前,CurrencyExchangeService 的三個實例正在運行。有可能在任何時間點都可以添加更多實例,或者可以刪除現(xiàn)有實例。
我們需要 CurrencyCalculationService 能夠在當(dāng)時可用的實例之間分配負載。
需要動態(tài)找出當(dāng)時 CurrencyExchangeService 的實例數(shù)量,并在它們之間分配負載。
該解決方案涉及多個組件。
服務(wù)注冊
所有微服務(wù)都向命名服務(wù)器注冊。Spring Boot 提供的選項之一是 Eureka。
服務(wù)發(fā)現(xiàn)
當(dāng)任何微服務(wù)想要與另一個微服務(wù)通信時,它會詢問命名服務(wù)器。在上面的示例中,CurrencyCalculationService 可以向 Eureka 命名服務(wù)器詢問正在運行的 CurrencyExchangeService 實例。反過來,命名服務(wù)會將這些實例的 URL 提供回 CurrencyConversionService。
這有助于在通信微服務(wù)的實例之間建立動態(tài)關(guān)系。
負載均衡
當(dāng)同一微服務(wù)有多個實例時,您希望在它們之間分配負載。Spring Cloud 提供的選項之一是客戶端負載平衡框架 Ribbon。
CurrencyCalculationService 使用 Ribbon 并跨 CurrencyExchangeService 的實例分發(fā)請求。
Feign 框架幫助我們編寫更簡單的 RESTful 客戶端。
在微服務(wù)架構(gòu)中,您需要完全了解微服務(wù)中發(fā)生的事情。
為了跟蹤請求,您需要為其分配一個唯一標(biāo)識符。Spring Cloud Sleuth 有助于為每個請求分配一個標(biāo)識符。您可以使用 Zipkin 之類的分布式跟蹤解決方案跨多個組件跟蹤請求。
所有的微服務(wù)都有一些共同的特性——安全性、日志記錄、分析等等。實現(xiàn)這些通用功能的最佳位置是什么?
API 網(wǎng)關(guān)為此類挑戰(zhàn)提供了很好的解決方案。
Netflix Zuul API 網(wǎng)關(guān)是實現(xiàn) API 網(wǎng)關(guān)的絕佳解決方案。
容錯
如果微服務(wù)宕機了怎么辦?其他微服務(wù)如何響應(yīng)?
Hystrix 有助于提高微服務(wù)的容錯能力。
在本文中,我們查看了 Spring Cloud 項目,發(fā)現(xiàn)它是各種項目的保護傘。這些中的每一個都解決了與微服務(wù)相關(guān)的特定問題。重要的問題包括服務(wù)注冊、服務(wù)發(fā)現(xiàn)、負載分配、事件跟蹤、服務(wù)監(jiān)控和容錯。
初級 202925
初級 203221
初級 202629
初級 203743