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