初學(xué)Spring Cloud鹊奖,用3W法—what苛聘,why,how來學(xué)習(xí)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. ---摘自官網(wǎng)
Spring Cloud為開發(fā)人員提供了工具网梢,以快速構(gòu)建分布式系統(tǒng)中的某些常見模式(例如:配置管理,服務(wù)發(fā)現(xiàn)赂毯,斷路器澎粟,智能路由,微代理欢瞪,控制總線活烙,一次性令牌,全局鎖遣鼓,領(lǐng)導(dǎo)選舉啸盏,分布式會話,群集狀態(tài))骑祟。 分布式系統(tǒng)的協(xié)調(diào)導(dǎo)致了樣板模式, 使用Spring Cloud開發(fā)人員可以快速地支持實現(xiàn)這些模式的服務(wù)和應(yīng)用程序回懦。 它們可以在任何分布式環(huán)境中正常工作,包括開發(fā)人員自己的筆記本電腦次企,裸機(jī)數(shù)據(jù)中心以及Cloud Foundry等托管平臺怯晕。
用更便于理解的方式說:
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發(fā)便利性巧妙地簡化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā)缸棵,如服務(wù)發(fā)現(xiàn)注冊舟茶、配置中心、消息總線堵第、負(fù)載均衡吧凉、斷路器、數(shù)據(jù)監(jiān)控等踏志,都可以用Spring Boot的開發(fā)風(fēng)格做到一鍵啟動和部署阀捅。Spring并沒有重復(fù)制造輪子,它只是將目前各家公司開發(fā)的比較成熟针余、經(jīng)得起實際考驗的服務(wù)框架組合起來饲鄙,通過Spring Boot風(fēng)格進(jìn)行再封裝屏蔽掉了復(fù)雜的配置和實現(xiàn)原理凄诞,最終給開發(fā)者留出了一套簡單易懂、易部署和易維護(hù)的分布式系統(tǒng)開發(fā)工具包忍级。
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版本名稱是按字母順序排列的(因此您可以按時間順序?qū)λ鼈冞M(jìn)行排序),帶有倫敦地鐵站的名稱(“ Angel”是第一個發(fā)行版颤练,“ Brixton”是第二個發(fā)行版)
2017年7月 既忆,布里克斯頓(Brixton)和天使(Angel)版本已經(jīng)被廢棄,卡姆登(Camden)也已被廢棄嗦玖;
達(dá)爾斯頓(Dalston)在2018年12月廢棄患雇,埃奇韋爾(Edgware)將跟隨Spring Boot 1.5.x的版本周期
Dalston和Edgware發(fā)行版本建立在Spring Boot 1.5.x上,并且不能與Spring Boot 2.0.x一起使用宇挫。
Greenwich可以構(gòu)建并與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 ---服務(wù)注冊和發(fā)現(xiàn)
Routing ---路由
Service-to-service calls ---服務(wù)到服務(wù)的調(diào)用
Load balancing ---負(fù)載均衡
Circuit Breakers ---斷路器
Leadership election and cluster state ---領(lǐng)導(dǎo)選舉和集群狀態(tài)
Distributed messaging ---分布式消息傳遞
具體詳細(xì)介紹在使用中進(jìn)行說明。
為什么要用 Spring Cloud欣除?
Spring Cloud由眾多子項目組成住拭,滿足了構(gòu)建微服務(wù)所需的所有解決方案;
有強(qiáng)大的 Spring 社區(qū)历帚、Netflix 等公司支持滔岳,并且開源社區(qū)貢獻(xiàn)非常活躍挽牢;
基于 Spring Boot谱煤,具有簡單配置、快速開發(fā)禽拔、輕松部署刘离、方便測試的特點。
Spring Cloud 與 Dubbo 的區(qū)別奏赘?
Spring Cloud 使用HTTP協(xié)議的REST API寥闪;Dubbo使用RPC通訊協(xié)議;
Dubbo支持各種通信協(xié)議磨淌,而且消費方和服務(wù)方使用長鏈接方式交互,通信速度上略勝Spring Cloud凿渊,如果對于系統(tǒng)的響應(yīng)時間有嚴(yán)格要求梁只,長鏈接更合適缚柳;
Dubbo服務(wù)依賴略重,需要有完善的版本管理機(jī)制搪锣,但是程序入侵少秋忙。而Spring Cloud通過Json交互,省略了版本管理的問題构舟,但是具體字段含義需要統(tǒng)一管理灰追,自身Rest API方式交互,為跨平臺調(diào)用奠定了基礎(chǔ)狗超;
企業(yè)需要根據(jù)自身的研發(fā)水平和所處階段選擇合適的架構(gòu)來解決業(yè)務(wù)問題弹澎,不管是Dubbo還是Spring Cloud都是實現(xiàn)微服務(wù)有效的工具。
HOW --- 使用
架構(gòu)圖
Spring Cloud Config
Spring Cloud Config為分布式系統(tǒng)中的外部化配置提供服務(wù)器和客戶端支持努咐。使用Config Server苦蒿,您可以集中管理所有環(huán)境中應(yīng)用程序的外部屬性。
Spring Cloud Config Server功能:
HTTP渗稍,用于外部配置的基于資源的API(名稱-值對佩迟,或等效的YAML內(nèi)容)
加密和解密屬性值(對稱或不對稱)
可輕松地使用Spring Boot應(yīng)用程序嵌入
@EnableConfigServer
Config Client功能(用于Spring應(yīng)用程序):
綁定到Config Server并
Environment
使用遠(yuǎn)程屬性源初始化Spring加密和解密屬性值(對稱或不對稱)
Spring Cloud Netflix
Spring Cloud Netflix通過自動配置并綁定到Spring Environment和其他Spring編程模型習(xí)慣用法,為Spring Boot應(yīng)用程序提供Netflix OSS集成竿屹。提供的模式包括服務(wù)發(fā)現(xiàn)(Eureka)报强,斷路器(Hystrix),智能路由(Zuul)和客戶端負(fù)載平衡(Ribbon)拱燃。
Eureka是微服務(wù)架構(gòu)中的注冊中心秉溉,負(fù)責(zé)服務(wù)的注冊與發(fā)現(xiàn)。
Eureka Client:負(fù)責(zé)將這個服務(wù)的信息注冊到Eureka Server中扼雏;
Eureka Server:注冊中心坚嗜,里面有一個注冊表,保存了各個服務(wù)所在的機(jī)器和端口號诗充;
Feign 可幫助我們更加便捷苍蔬、優(yōu)雅地調(diào)用HTTP API,基于Feign的動態(tài)代理機(jī)制蝴蜓,可根據(jù)注解和選擇的機(jī)器碟绑,拼接請求URL地址,發(fā)起請求茎匠。
Hystrix 通過添加等待時間容限和容錯邏輯來幫助控制分布式服務(wù)之間的交互格仲,通過隔離服務(wù)之間的訪問點,停止服務(wù)之間的級聯(lián)故障并提供后備選項來實現(xiàn)此目的诵冒,所有這些都可以提高系統(tǒng)的整體彈性凯肋。
Hystrix之熔斷:每當(dāng)調(diào)用時間超過指定時間時(默認(rèn)為1000ms),斷路器將會中斷對這個方法的調(diào)用汽馋;
Hystrix之降級:為了更好的用戶體驗侮东,當(dāng)一個方法調(diào)用異常時圈盔,通過執(zhí)行另一種代碼邏輯來給用戶友好的回復(fù);
Zuul 是從設(shè)備和 web 站點到 Netflix 流應(yīng)用后端的所有請求的前門悄雅。作為邊界服務(wù)應(yīng)用驱敲,Zuul 是為了實現(xiàn)動態(tài)路由、監(jiān)視宽闲、彈性和安全性而構(gòu)建的众眨。
Ribbon 是一個客戶端/進(jìn)程內(nèi)負(fù)載均衡器,運行在消費者端【Nginx 是接收了所有的請求進(jìn)行負(fù)載均衡的】容诬。服務(wù)間發(fā)起請求的時候娩梨,基于Ribbon做負(fù)載均衡,從一個服務(wù)的多臺機(jī)器中選擇一臺放案。
Spring Cloud Bus
將輕量級消息代理程序鏈接到分布式系統(tǒng)的節(jié)點姚建。然后可以將其用于廣播狀態(tài)更改(例如配置更改)或其他管理指令。當(dāng)前唯一的實現(xiàn)是使用AMQP代理作為傳輸吱殉,但是其他傳輸?shù)穆肪€圖上仍具有相同的基本功能集(還有一些取決于傳輸)掸冤。
Spring Cloud Consul
通過自動配置并綁定到Spring Environment和其他Spring編程模型習(xí)慣用法,為Spring Boot應(yīng)用程序提供Consul集成友雳。通過一些簡單的注釋稿湿,您可以快速啟用和配置應(yīng)用程序內(nèi)部的通用模式,并使用Hashicorp的Consul構(gòu)建大型分布式系統(tǒng)押赊。提供的模式包括服務(wù)發(fā)現(xiàn)饺藤,分布式配置和控制總線。
Spring Cloud Security
提供了一組原語來構(gòu)建安全的應(yīng)用程序和服務(wù)流礁√樗祝可以在外部(或中央)進(jìn)行大量配置的聲明性模型很適合于通常使用中央身份管理服務(wù)的大型協(xié)作遠(yuǎn)程組件系統(tǒng)的實施。在像Cloud Foundry這樣的服務(wù)平臺中使用它也非常容易神帅。在Spring Boot和Spring Security OAuth2的基礎(chǔ)上再姑,我們可以快速創(chuàng)建實現(xiàn)常見模式(如單點登錄、令牌中繼和令牌交換)的系統(tǒng)找御。
Spring Cloud Sleuth
從Dapper元镀,Zipkin和HTrace 大量借鑒了Spring Cloud的分布式跟蹤解決方案。對于大多數(shù)用戶而言霎桅,Sleuth應(yīng)該是不可見的栖疑,并且您與外部系統(tǒng)的所有交互都應(yīng)自動進(jìn)行檢測。您可以簡單地在日志中捕獲數(shù)據(jù)滔驶,也可以將其發(fā)送到遠(yuǎn)程收集器服務(wù)遇革。
Spring Cloud Data Flow
用于Cloud Foundry和Kubernetes的基于微服務(wù)的流式處理和批處理數(shù)據(jù)處理。
提供了用于為流和批處理數(shù)據(jù)管道創(chuàng)建復(fù)雜拓?fù)涞墓ぞ摺?shù)據(jù)管道包含使用Spring Cloud Stream或Spring Cloud Task微服務(wù)框架構(gòu)建的Spring Boot應(yīng)用程序澳淑。
Spring Cloud Stream
Spring Cloud Stream是一個框架比原,用于構(gòu)建與共享消息傳遞系統(tǒng)連接的高度可擴(kuò)展的事件驅(qū)動型微服務(wù)插佛。
該框架提供了一個靈活的編程模型杠巡,該模型建立在已經(jīng)建立并熟悉的Spring習(xí)慣用法和最佳實踐的基礎(chǔ)上,包括對持久性pub / sub語義雇寇,使用者組和有狀態(tài)分區(qū)的支持氢拥。
Spring Cloud Zookeeper
通過自動配置并綁定到Spring Environment和其他Spring編程模型習(xí)慣用法,為Spring Boot應(yīng)用程序提供了Apache Zookeeper集成锨侯。通過一些簡單的注釋嫩海,您可以快速啟用和配置應(yīng)用程序內(nèi)的通用模式,并使用Zookeeper構(gòu)建大型分布式系統(tǒng)囚痴。提供的模式包括服務(wù)發(fā)現(xiàn)和分布式配置叁怪。
Spring Cloud Contract
Spring Cloud Contract是一個總括項目解決方案,可幫助用戶成功實施“消費者驅(qū)動合同”方法深滚。
Spring Cloud Gateway
該項目提供了一個用于在Spring MVC之上構(gòu)建API網(wǎng)關(guān)的庫奕谭。Spring Cloud Gateway旨在提供一種簡單而有效的方法來路由到API,并為它們提供跨領(lǐng)域的關(guān)注痴荐,例如:安全性血柳,監(jiān)視/指標(biāo)和彈性。
Spring Cloud OpenFeign
Spring Cloud OpenFeign通過自動配置并綁定到Spring Environment和其他Spring編程模型慣用法為Spring Boot應(yīng)用程序提供集成生兆。
注:上述展示部分項目难捌,如需查看更多項目可查看官網(wǎng)。