3W法(what,why,how)入門 Spring Cloud

初學Spring Cloud,用3W法—what,why,how來學習Spring Cloud,文中引用部分均來自文末的鏈接處。

先上圖,后面慢慢道來:

Spring Cloud 學習

WHAT --- 定義

什么是Spring Cloud?

Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state). Coordination of distributed systems leads to boiler plate patterns, and using Spring Cloud developers can quickly stand up services and applications that implement those patterns. They will work well in any distributed environment, including the developer’s own laptop, bare metal data centres, and managed platforms such as Cloud Foundry. ---摘自官網

Spring Cloud為開發人員提供了工具,以快速構建分布式系統中的某些常見模式(例如:配置管理,服務發現,斷路器,智能路由,微代理,控制總線,一次性令牌,全局鎖,領導選舉,分布式會話,群集狀態)。 分布式系統的協調導致了樣板模式, 使用Spring Cloud開發人員可以快速地支持實現這些模式的服務和應用程序。 它們可以在任何分布式環境中正常工作,包括開發人員自己的筆記本電腦,裸機數據中心以及Cloud Foundry等托管平臺。

用更便于理解的方式說:

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現注冊、配置中心、消息總線、負載均衡、斷路器、數據監控等,都可以用Spring Boot的開發風格做到一鍵啟動和部署。Spring并沒有重復制造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過Spring Boot風格進行再封裝屏蔽掉了復雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分布式系統開發工具包。

Spring Cloud的版本有哪些?

| Release Train | Boot Version |

| ------------- | ------------ |

| Hoxton | 2.2.x |

| Greenwich | 2.1.x |

| Finchley | 2.0.x |

| Edgware | 1.5.x |

| Dalston | 1.5.x |

Spring Cloud版本名稱是按字母順序排列的(因此您可以按時間順序對它們進行排序),帶有倫敦地鐵站的名稱(“ Angel”是第一個發行版,“ Brixton”是第二個發行版)

2017年7月 ,布里克斯頓(Brixton)和天使(Angel)版本已經被廢棄,卡姆登(Camden)也已被廢棄;

達爾斯頓(Dalston)在2018年12月廢棄,埃奇韋爾(Edgware)將跟隨Spring Boot 1.5.x的版本周期

Dalston和Edgware發行版本建立在Spring Boot 1.5.x上,并且不能與Spring Boot 2.0.x一起使用。

Greenwich可以構建并與Spring Boot 2.1.x一起使用,并且不能與Spring Boot 1.5.x一起使用。

截止2019年12月底,Spring Cloud最新版本為Hoxton,Greenwich 為SR4、Finchley 為SR4。

WHY --- 特點

Spring Cloud 具有什么特點?

  • Distributed/versioned configuration --- 分布式/版本化配置

  • Service registration and discovery ---服務注冊和發現

  • Routing ---路由

  • Service-to-service calls ---服務到服務的調用

  • Load balancing ---負載均衡

  • Circuit Breakers ---斷路器

  • Leadership election and cluster state ---領導選舉和集群狀態

  • Distributed messaging ---分布式消息傳遞

具體詳細介紹在使用中進行說明。

為什么要用 Spring Cloud?

  • Spring Cloud由眾多子項目組成,滿足了構建微服務所需的所有解決方案;

  • 有強大的 Spring 社區、Netflix 等公司支持,并且開源社區貢獻非常活躍;

  • 基于 Spring Boot,具有簡單配置、快速開發、輕松部署、方便測試的特點。

Spring Cloud 與 Dubbo 的區別?

  • Spring Cloud 使用HTTP協議的REST API;Dubbo使用RPC通訊協議;

  • Dubbo支持各種通信協議,而且消費方和服務方使用長鏈接方式交互,通信速度上略勝Spring Cloud,如果對于系統的響應時間有嚴格要求,長鏈接更合適;

  • Dubbo服務依賴略重,需要有完善的版本管理機制,但是程序入侵少。而Spring Cloud通過Json交互,省略了版本管理的問題,但是具體字段含義需要統一管理,自身Rest API方式交互,為跨平臺調用奠定了基礎;

  • 企業需要根據自身的研發水平和所處階段選擇合適的架構來解決業務問題,不管是Dubbo還是Spring Cloud都是實現微服務有效的工具。

HOW --- 使用

架構圖

spring cloud.png

Spring Cloud Config

Spring Cloud Config為分布式系統中的外部化配置提供服務器和客戶端支持。使用Config Server,您可以集中管理所有環境中應用程序的外部屬性。

Spring Cloud Config Server功能:

  • HTTP,用于外部配置的基于資源的API(名稱-值對,或等效的YAML內容)

  • 加密和解密屬性值(對稱或不對稱)

  • 可輕松地使用Spring Boot應用程序嵌入 @EnableConfigServer

Config Client功能(用于Spring應用程序):

  • 綁定到Config Server并Environment使用遠程屬性源初始化Spring

  • 加密和解密屬性值(對稱或不對稱)

Spring Cloud Netflix

Spring Cloud Netflix通過自動配置并綁定到Spring Environment和其他Spring編程模型習慣用法,為Spring Boot應用程序提供Netflix OSS集成。提供的模式包括服務發現(Eureka),斷路器(Hystrix),智能路由(Zuul)和客戶端負載平衡(Ribbon)。

Eureka是微服務架構中的注冊中心,負責服務的注冊與發現。

  • Eureka Client:負責將這個服務的信息注冊到Eureka Server中;

  • Eureka Server:注冊中心,里面有一個注冊表,保存了各個服務所在的機器和端口號;

Feign 可幫助我們更加便捷、優雅地調用HTTP API,基于Feign的動態代理機制,可根據注解和選擇的機器,拼接請求URL地址,發起請求。

Hystrix 通過添加等待時間容限和容錯邏輯來幫助控制分布式服務之間的交互,通過隔離服務之間的訪問點,停止服務之間的級聯故障并提供后備選項來實現此目的,所有這些都可以提高系統的整體彈性。

  • Hystrix之熔斷:每當調用時間超過指定時間時(默認為1000ms),斷路器將會中斷對這個方法的調用;

  • Hystrix之降級:為了更好的用戶體驗,當一個方法調用異常時,通過執行另一種代碼邏輯來給用戶友好的回復;

Zuul 是從設備和 web 站點到 Netflix 流應用后端的所有請求的前門。作為邊界服務應用,Zuul 是為了實現動態路由、監視、彈性和安全性而構建的。

Ribbon 是一個客戶端/進程內負載均衡器,運行在消費者端【Nginx 是接收了所有的請求進行負載均衡的】。服務間發起請求的時候,基于Ribbon做負載均衡,從一個服務的多臺機器中選擇一臺。

Spring Cloud Bus

將輕量級消息代理程序鏈接到分布式系統的節點。然后可以將其用于廣播狀態更改(例如配置更改)或其他管理指令。當前唯一的實現是使用AMQP代理作為傳輸,但是其他傳輸的路線圖上仍具有相同的基本功能集(還有一些取決于傳輸)。

Spring Cloud Consul

通過自動配置并綁定到Spring Environment和其他Spring編程模型習慣用法,為Spring Boot應用程序提供Consul集成。通過一些簡單的注釋,您可以快速啟用和配置應用程序內部的通用模式,并使用Hashicorp的Consul構建大型分布式系統。提供的模式包括服務發現,分布式配置和控制總線。

Spring Cloud Security

提供了一組原語來構建安全的應用程序和服務。可以在外部(或中央)進行大量配置的聲明性模型很適合于通常使用中央身份管理服務的大型協作遠程組件系統的實施。在像Cloud Foundry這樣的服務平臺中使用它也非常容易。在Spring Boot和Spring Security OAuth2的基礎上,我們可以快速創建實現常見模式(如單點登錄、令牌中繼和令牌交換)的系統。

Spring Cloud Sleuth

DapperZipkin和HTrace 大量借鑒了Spring Cloud的分布式跟蹤解決方案。對于大多數用戶而言,Sleuth應該是不可見的,并且您與外部系統的所有交互都應自動進行檢測。您可以簡單地在日志中捕獲數據,也可以將其發送到遠程收集器服務。

Spring Cloud Data Flow

用于Cloud Foundry和Kubernetes的基于微服務的流式處理和批處理數據處理。

提供了用于為流和批處理數據管道創建復雜拓撲的工具。數據管道包含使用Spring Cloud StreamSpring Cloud Task微服務框架構建的Spring Boot應用程序。

Spring Cloud Stream

Spring Cloud Stream是一個框架,用于構建與共享消息傳遞系統連接的高度可擴展的事件驅動型微服務。

該框架提供了一個靈活的編程模型,該模型建立在已經建立并熟悉的Spring習慣用法和最佳實踐的基礎上,包括對持久性pub / sub語義,使用者組和有狀態分區的支持。

Spring Cloud Zookeeper

通過自動配置并綁定到Spring Environment和其他Spring編程模型習慣用法,為Spring Boot應用程序提供了Apache Zookeeper集成。通過一些簡單的注釋,您可以快速啟用和配置應用程序內的通用模式,并使用Zookeeper構建大型分布式系統。提供的模式包括服務發現和分布式配置。

Spring Cloud Contract

Spring Cloud Contract是一個總括項目解決方案,可幫助用戶成功實施“消費者驅動合同”方法。

Spring Cloud Gateway

該項目提供了一個用于在Spring MVC之上構建API網關的庫。Spring Cloud Gateway旨在提供一種簡單而有效的方法來路由到API,并為它們提供跨領域的關注,例如:安全性,監視/指標和彈性。

Spring Cloud OpenFeign

Spring Cloud OpenFeign通過自動配置并綁定到Spring Environment和其他Spring編程模型慣用法為Spring Boot應用程序提供集成。

注:上述展示部分項目,如需查看更多項目可查看官網。

參考

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 微服務架構模式的核心在于如何識別服務的邊界,設計出合理的微服務。但如果要將微服務架構運用到生產項目上,并且能夠發揮...
    java菜閱讀 2,965評論 0 6
  • 前言 現在研發的項目啟動今已近一年之久,期間從項目屬性、人員規模、系統定位等方面都發生了很大的變化,而且是越變越好...
    孫振強閱讀 12,324評論 1 58
  • 轉載 Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分布式系...
    Snail127閱讀 1,483評論 0 3
  • 匆匆來到魔都來到華師大參加赴泰孔院志愿者教師培訓。第一天我們主要熟悉了一下校園和培訓的內容。對華師大也有了更深的了...
    彼岸維和閱讀 170評論 0 0
  • 2019年6月6日,參與打卡第27天。今天我讀的是《廿一世紀初的前言后語》,第三章對學生家長研修班講話。保持文化的...
    郭玉芝河南商丘閱讀 237評論 0 2