更新時間:2021-12-28 11:00:43 來源:動力節點 瀏覽2280次
在本文中,我們重點介紹 Spring Cloud。我們談論其保護傘下的各種組件。
Spring Cloud 是什么。
微服務架構中的典型挑戰。
Spring Cloud 解決的挑戰。
Spring Cloud 保護傘下的重要項目。
Spring Cloud 如何幫助您構建微服務架構。
云與微服務簡介:挑戰與優勢
這是關于云和微服務的五篇系列文章中的第二篇。第 1 部分可以在這里找到:
Miroservices 架構和云快速介紹:為什么、什么和如何
如果你去Spring Cloud的主頁,你會看到以下內容:
Spring Cloud 為開發者提供了快速構建分布式系統中一些常用模式的工具(例如配置管理、服務發現、斷路器、智能路由、微代理、控制總線、一次性令牌、全局鎖、領導選舉、分布式會話、集群狀態) - Spring Cloud DocsSpring Cloud 不是單個項目,而是它們的集群。
下面顯示的只是這個保護傘下存在的項目的一小部分示例。
下面簡單介紹一下 Spring Cloud 保護傘下的一些重要項目
Netflix 是最早使用微服務架構的組織之一。在這個項目下,大量的項目已經開源供公眾使用。Eureka、Hystrix 和 Zuul 是其中比較受歡迎的。
這個項目提供了一個集中配置管理的框架,使用了一個 Git 或一個 SVN 存儲庫。
這使微服務和基礎設施組件能夠在分布式設置中相互通信。
現在讓我們來看看我們在開發微服務應用程序時面臨的挑戰,以及 Spring Cloud 為他們提供的解決方案。
在具有微服務架構的系統中,存在大量相互通信的小型微服務:
這些微服務中的每一個都需要在多個環境中執行。在給定的環境中,可能有多個運行該微服務的實例。這意味著運維團隊需要為每個微服務管理大量的配置信息。
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年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習