更新時(shí)間:2021-12-28 11:00:43 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2247次
在本文中,我們重點(diǎn)介紹 Spring Cloud。我們談?wù)撈浔Wo(hù)傘下的各種組件。
Spring Cloud 是什么。
微服務(wù)架構(gòu)中的典型挑戰(zhàn)。
Spring Cloud 解決的挑戰(zhàn)。
Spring Cloud 保護(hù)傘下的重要項(xiàng)目。
Spring Cloud 如何幫助您構(gòu)建微服務(wù)架構(gòu)。
云與微服務(wù)簡(jiǎn)介:挑戰(zhàn)與優(yōu)勢(shì)
這是關(guān)于云和微服務(wù)的五篇系列文章中的第二篇。第 1 部分可以在這里找到:
Miroservices 架構(gòu)和云快速介紹:為什么、什么和如何
如果你去Spring Cloud的主頁,你會(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è)項(xiàng)目,而是它們的集群。
下面顯示的只是這個(gè)保護(hù)傘下存在的項(xiàng)目的一小部分示例。
下面簡(jiǎn)單介紹一下 Spring Cloud 保護(hù)傘下的一些重要項(xiàng)目
Netflix 是最早使用微服務(wù)架構(gòu)的組織之一。在這個(gè)項(xiàng)目下,大量的項(xiàng)目已經(jīng)開源供公眾使用。Eureka、Hystrix 和 Zuul 是其中比較受歡迎的。
這個(gè)項(xiàng)目提供了一個(gè)集中配置管理的框架,使用了一個(gè) Git 或一個(gè) SVN 存儲(chǔ)庫。
這使微服務(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)境中,可能有多個(gè)運(yùn)行該微服務(wù)的實(shí)例。這意味著運(yùn)維團(tuán)隊(duì)需要為每個(gè)微服務(wù)管理大量的配置信息。
Spring Cloud 提供了一種方法,其中所有微服務(wù)的所有跨環(huán)境配置都存儲(chǔ)在 Git 存儲(chǔ)庫中。Spring Cloud Config Server 然后將此信息公開給所有微服務(wù)。
將配置存儲(chǔ)在這樣一個(gè)集中的位置使運(yùn)營團(tuán)隊(duì)更容易管理應(yīng)用程序/架構(gòu)。
考慮以下示例。
CurrencyCalculationService 微服務(wù)與另一個(gè)微服務(wù) CurrencyExchangeService 對(duì)話。當(dāng)前,正在運(yùn)行 CurrencyExchangeService 的三個(gè)實(shí)例。有可能在任何時(shí)間點(diǎn)都可以添加更多實(shí)例,或者可以刪除現(xiàn)有實(shí)例。
我們需要 CurrencyCalculationService 能夠在當(dāng)時(shí)可用的實(shí)例之間分配負(fù)載。
需要的是動(dòng)態(tài)找出當(dāng)時(shí)CurrencyExchangeService的實(shí)例數(shù),并在它們之間分配負(fù)載。
該解決方案涉及多個(gè)組件。
所有微服務(wù)都向命名服務(wù)器注冊(cè)。Spring Boot 提供的選項(xiàng)之一是 Eureka。
當(dāng)任何微服務(wù)想要與另一個(gè)微服務(wù)通信時(shí),它會(huì)詢問命名服務(wù)器。在上面的示例中,CurrencyCalculationService 可以向 Eureka 命名服務(wù)器詢問正在運(yùn)行的 CurrencyExchangeService 實(shí)例。反過來,命名服務(wù)將這些實(shí)例的 URL 提供回 CurrencyConversionService。
這有助于在通信微服務(wù)的實(shí)例之間建立動(dòng)態(tài)關(guān)系。
當(dāng)同一個(gè)微服務(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)的絕佳解決方案。
如果微服務(wù)宕機(jī)了怎么辦?其他微服務(wù)如何響應(yīng)?
Hystrix 有助于提高微服務(wù)的容錯(cuò)能力。
在本文中,我們查看了 Spring Cloud 項(xiàng)目,并看到它是各種項(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í)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743