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

初學(xué)Spring Cloud鹊奖,用3W法—what苛聘,why,how來學(xué)習(xí)Spring Cloud忠聚,文中引用部分均來自文末的鏈接處设哗。

先上圖,后面慢慢道來:

Spring Cloud 學(xué)習(xí)

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.png

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 StreamSpring 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)。

參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末合蔽,一起剝皮案震驚了整個濱河市击敌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辈末,老刑警劉巖愚争,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異挤聘,居然都是意外死亡轰枝,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門组去,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鞍陨,“玉大人,你說我怎么就攤上這事〕夏欤” “怎么了缭裆?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長寿烟。 經(jīng)常有香客問我澈驼,道長,這世上最難降的妖魔是什么筛武? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任缝其,我火速辦了婚禮,結(jié)果婚禮上徘六,老公的妹妹穿的比我還像新娘内边。我一直安慰自己,他們只是感情好待锈,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布漠其。 她就那樣靜靜地躺著,像睡著了一般竿音。 火紅的嫁衣襯著肌膚如雪和屎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天谍失,我揣著相機(jī)與錄音眶俩,去河邊找鬼。 笑死快鱼,一個胖子當(dāng)著我的面吹牛颠印,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抹竹,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼线罕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了窃判?” 一聲冷哼從身側(cè)響起钞楼,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎袄琳,沒想到半個月后询件,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡唆樊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年宛琅,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逗旁。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡嘿辟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情红伦,我是刑警寧澤英古,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站昙读,受9級特大地震影響召调,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜箕戳,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一某残、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧陵吸,春花似錦、人聲如沸介牙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽环础。三九已至囚似,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間线得,已是汗流浹背饶唤。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留贯钩,地道東北人募狂。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像角雷,于是被迫代替她去往敵國和親祸穷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 微服務(wù)架構(gòu)模式的核心在于如何識別服務(wù)的邊界勺三,設(shè)計出合理的微服務(wù)雷滚。但如果要將微服務(wù)架構(gòu)運用到生產(chǎn)項目上,并且能夠發(fā)揮...
    java菜閱讀 2,949評論 0 6
  • 前言 現(xiàn)在研發(fā)的項目啟動今已近一年之久吗坚,期間從項目屬性祈远、人員規(guī)模、系統(tǒng)定位等方面都發(fā)生了很大的變化商源,而且是越變越好...
    孫振強(qiáng)閱讀 12,292評論 1 58
  • 轉(zhuǎn)載 Spring Cloud是一系列框架的有序集合车份。它利用Spring Boot的開發(fā)便利性巧妙地簡化了分布式系...
    Snail127閱讀 1,480評論 0 3
  • 匆匆來到魔都來到華師大參加赴泰孔院志愿者教師培訓(xùn)。第一天我們主要熟悉了一下校園和培訓(xùn)的內(nèi)容炊汹。對華師大也有了更深的了...
    彼岸維和閱讀 164評論 0 0
  • 2019年6月6日躬充,參與打卡第27天。今天我讀的是《廿一世紀(jì)初的前言后語》,第三章對學(xué)生家長研修班講話充甚。保持文化的...
    郭玉芝河南商丘閱讀 234評論 0 2