Spring Cloud學(xué)習(xí)記錄
一践磅、spring的微服務(wù)架構(gòu)圖
Spring官方的架構(gòu)圖:
分為以下幾塊組件:
-
API網(wǎng)關(guān)
對(duì)外(瀏覽器单刁、客戶端、移動(dòng)端等)暴露接口,提供路由羔飞、過濾肺樟、身份認(rèn)證、負(fù)載均衡等功能
-
服務(wù)注冊(cè)與發(fā)現(xiàn)
將微服務(wù)注冊(cè)到注冊(cè)中心,并可以被其他微服務(wù)發(fā)現(xiàn)及調(diào)用逻淌。(通常同一微服務(wù)都是部署多個(gè)的么伯,服務(wù)調(diào)用組件都會(huì)提供負(fù)載均衡的功能)
-
配置中心
統(tǒng)一的配置中心(通常會(huì)部署成分布式),能夠被各個(gè)服務(wù)讀取到卡儒,提供配置文件的版本管理田柔、權(quán)限控制的功能
-
分布式追蹤
當(dāng)微服務(wù)之間的依賴關(guān)系變得很復(fù)雜時(shí)(A調(diào)用了B,B調(diào)用了C,C又調(diào)用了D...),就需要服務(wù)鏈路追蹤組件來分析調(diào)用鏈的復(fù)雜度
- 微服務(wù)
在架構(gòu)圖中沒有體現(xiàn)的:
-
斷路器
在微服務(wù)中,某個(gè)服務(wù)調(diào)用了多個(gè)其他服務(wù)是很常見的骨望,當(dāng)其中某個(gè)服務(wù)由于網(wǎng)絡(luò)或自身原因出現(xiàn)問題硬爆,調(diào)用這個(gè)服務(wù)時(shí)就會(huì)出現(xiàn)阻塞,若有大量請(qǐng)求進(jìn)來擎鸠,容器的線程資源會(huì)被消耗完缀磕,從而導(dǎo)致服務(wù)不可用。因?yàn)榉?wù)和服務(wù)之間有依賴性劣光,故障會(huì)傳播袜蚕,這就是服務(wù)故障的“雪崩”效應(yīng)。
引入斷路器后绢涡,在對(duì)某個(gè)服務(wù)的調(diào)用失敗次數(shù)達(dá)到一個(gè)閾值時(shí)牲剃,斷路器會(huì)被打開,會(huì)快速返回一個(gè)固定值雄可。避免連鎖故障 -
消息總線
使用輕量級(jí)的消息代理(一般是消息隊(duì)列)用于微服務(wù)之間通訊颠黎。(SpringCloud可在各個(gè)服務(wù)之間傳遞事件)
-
分布式事務(wù)
當(dāng)程序單機(jī)運(yùn)行,數(shù)據(jù)庫(kù)能通過事務(wù)為我們保證數(shù)據(jù)的一致性滞项。但是當(dāng)程序分布式運(yùn)行時(shí)狭归,我們需要在分布式環(huán)境下保持?jǐn)?shù)據(jù)一致性,此時(shí)就需要分布式事務(wù)組件來實(shí)現(xiàn)這個(gè)功能
二文判、SpringCloud各組件的開源實(shí)現(xiàn)
SpringCloud是以微服務(wù)為核心的分布式系統(tǒng)的一個(gè)構(gòu)建標(biāo)準(zhǔn)过椎,有如下各個(gè)實(shí)現(xiàn),其中的多個(gè)組件可以實(shí)現(xiàn)無(wú)縫切換
三戏仓、SpringCloud的版本問題
SpringCloud的版本以倫敦地鐵站名字演進(jìn)疚宇,從A開始,目前最新版本是Hoxton.SR8赏殃,官方發(fā)布的正式版本號(hào)都是以RELEASE或者SRX結(jié)尾(X表示一個(gè)數(shù)字)敷待。這兩種版本號(hào)都是可以正式用于生產(chǎn)環(huán)境的,當(dāng)一個(gè)版本的SpringCloud項(xiàng)目發(fā)布的內(nèi)容積累到一定程度或者一個(gè)嚴(yán)重bug解決可用后仁热,就會(huì)發(fā)布一個(gè)“service release”版本榜揖,也就是SRX版本。官方會(huì)在某個(gè)SRX版本上標(biāo)注GA(General Availability),表示官方推薦廣泛使用举哟。
- Dalston
Spring Boot版本:1.5.x
- Edgware
Spring Boot版本:1.5.x
- Finchley
Spring Boot版本:2.0.x
- Greenwich
Spring Boot版本:2.1.x
- Hoxton
Spring Boot版本:2.2.x思劳,2.3.x(SR5起)
SpringCloudAlibaba的版本號(hào)與SpringBoot一致
- 1.5.x版本適用于Spring Boot 1.5.x
- 2.0.x版本適用于Spring Boot 2.0.x
- 2.1.x版本適用于Spring Boot 2.1.x
- 2.2.x版本適用于Spring Boot 2.2.x
四、學(xué)習(xí)資料推薦
方志朋的專欄 (有完整版的學(xué)習(xí)路線妨猩,涵蓋了SpringCloud的各個(gè)組件)
SpringCloudAlibaba Github主頁(yè)