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