簡(jiǎn)單說明一下Spring cloud

簡(jiǎn)單說明一下Spring cloud

Spring Cloud是Spring旗下的項(xiàng)目之一鏈接: http://projects.spring.io/spring-cloud/.

Spring cloud最擅長(zhǎng)的就是集成,把世界上最好的框架拿過來集成到自己的項(xiàng)目中。

簡(jiǎn)單的來說Spring cloud就是一個(gè)工具集,包含了許多工具,下面就來介紹一下它所涉及的組件。

Eureka 注冊(cè)中心

作用:主要進(jìn)行服務(wù)管理,定期檢查服務(wù),返回服務(wù)列表。

第一步:實(shí)例化服務(wù),applicationService

第二步:將服務(wù)注冊(cè)到Eureka中。

第三部:Eureka負(fù)責(zé)記錄服務(wù),把服務(wù)保存,例如:http://localhost:9091

第四步:客戶消費(fèi)端從Eureka中拉取服務(wù)列表。

第五步:如何進(jìn)行拉取,是基于負(fù)載均衡,減少了服務(wù)端壓力。

第六步:實(shí)例化服務(wù)定期的向Eureka發(fā)送心跳,表示自己存活著,若是沒有定期發(fā)送心跳,Eureka會(huì)把其進(jìn)行剔除服務(wù)。

如何是實(shí)現(xiàn)Eureka集群可用配置

將user-service服務(wù)注冊(cè)到user-service,一般情況下在yml是一般配置register-with-eureka: false,將false改為true,這樣多個(gè)user-service就能發(fā)現(xiàn)對(duì)象,然后進(jìn)行調(diào)用,但重要的一點(diǎn)是,同一臺(tái)電腦要修改端口,不同的電腦修改端口即可。

Ribbon 負(fù)載均衡

負(fù)載均衡是一種算法,作用是,可以通過算法有效的控制HTTP和TCP客服端的行為。

若是user-service實(shí)現(xiàn)了集群,Ribbon通過算法進(jìn)行拉取服務(wù),算法例如,一般隨機(jī),輪詢。

Hystrix 熔斷器

Hystrix是一個(gè)延遲的容錯(cuò)庫,用于隔離訪問遠(yuǎn)程服務(wù),防止出現(xiàn)聯(lián)機(jī)失敗。

Hystrix如何解決雪崩效應(yīng):

線程隔離:Hystrix為每個(gè)依賴服務(wù)調(diào)用分配一個(gè)小的線程池,如果線程池已滿調(diào)用將被立即拒絕,默認(rèn)不采用排隊(duì),加速 失敗判定時(shí)間。

服務(wù)降級(jí):用戶的請(qǐng)求將不再直接訪問服務(wù),而是通過線程池中的空閑線程來訪問服務(wù),如果線程池已滿,或者請(qǐng)求超 時(shí),則會(huì)進(jìn)行降級(jí)處理。

服務(wù)降級(jí)雖然會(huì)導(dǎo)致請(qǐng)求失敗,但是不會(huì)導(dǎo)致阻塞,而且最多會(huì)影響這個(gè)依賴服務(wù)對(duì)應(yīng)的線程池中的資源,對(duì)其它服 務(wù)沒有響應(yīng)。

服務(wù)降級(jí),一般有兩種情況,一種是訪問失敗次數(shù)過多,一種線程池已滿。

熔斷器流程

Closed:關(guān)閉狀態(tài)(斷路器關(guān)閉),所有請(qǐng)求都正常訪問。

Open:打開狀態(tài)(斷路器打開),所有請(qǐng)求都會(huì)被降級(jí)。

Hystrix會(huì)對(duì)請(qǐng)求情況計(jì)數(shù),當(dāng)一定時(shí)間內(nèi)失敗請(qǐng)求百 分比達(dá)到閾值,則觸發(fā)熔斷,斷路器會(huì)完全打開。默認(rèn)失敗比例的閾值是50%,請(qǐng)求次數(shù)少不低于20次。

Half Open:半開狀態(tài),不是永久的,斷路器打開后會(huì)進(jìn)入休眠時(shí)間(默認(rèn)是5S)。隨后斷路器會(huì)自動(dòng)進(jìn)入半開 狀態(tài)。此時(shí)會(huì)釋放部分請(qǐng)求通過,若這些請(qǐng)求都是健康的,則會(huì)關(guān)閉斷路器,否則繼續(xù)保持打開,再次進(jìn)行休 眠計(jì)。

Feign

feign也叫偽裝:feign可以吧Rest請(qǐng)求進(jìn)行隱藏,偽裝成SpringMVC和Controller一樣,不用自己再去拼接url和參數(shù)一切都交給feign去做就可以了。

Feign可以配置Feign內(nèi)置ribbon配置項(xiàng)和Hystrix熔斷的Fallback配置。

負(fù)載均衡,服務(wù)熔斷,請(qǐng)求服務(wù),日志級(jí)別,都可以通過配置項(xiàng)feign中開啟使用,大大簡(jiǎn)化了代碼的重復(fù)性。

Gateway 網(wǎng)關(guān)

spring Cloud Gateway的核心就是一系列的過濾器,可以將客戶端的請(qǐng)求轉(zhuǎn)發(fā)到不同的服務(wù)器。

Gateway作為網(wǎng)關(guān)其中有一個(gè)重要功能,就是實(shí)現(xiàn)請(qǐng)求的鑒權(quán)。這個(gè)動(dòng)作往往是通過網(wǎng)關(guān)提供的過濾器來實(shí)現(xiàn)的。

作用:過濾器和路由。

路由:路由信息的組成:由一個(gè)ID,一個(gè)目的URL,一組斷言工廠,一組filter組成。如果路由斷言為真,說明請(qǐng)求URL和配置路由匹配。

斷言:spring Cloud Gateway中的斷言函數(shù)輸入類型是Spring5.0框架中的serverWebExchange。Spring Cloud Gateway的斷言函數(shù)允許開發(fā)者去定義匹配來自于Http Request中的任何 信息比如請(qǐng)求頭和參數(shù)。

**過濾器:**一個(gè)標(biāo)準(zhǔn)spring WebFilter。Spring Cloud Gateway中的Filter分為兩種類型的Filter,分別 是Gateway Filter和Global Filter。過濾器Filter將會(huì)對(duì)請(qǐng)求和響應(yīng)進(jìn)行修改處理。

過濾器又分為兩種

**局部過濾器:**通過 spring.cloud.gateway.routes.filters 配置在具體路由下,只作用在當(dāng)前路由 上;自帶的過濾器都可以配置或者自定義按照自帶過濾器的方式。如果配置 spring.cloud.gateway.default-filters 上會(huì)對(duì)所有路由生效也算是全局的過濾器;但是這些過濾器 的實(shí)現(xiàn)上都是要實(shí)現(xiàn)GatewayFilterFactory接口。

**全局過濾器:**不需要在配置文件中配置,作用在所有的路由上;實(shí)現(xiàn) GlobalFilter 接口即可。

跨域:在js請(qǐng)求訪問中,如果訪問的地址與當(dāng)前服務(wù)器的域名、ip或者端口號(hào)不一致則稱為跨域請(qǐng)求。若不解決則不 能獲取到對(duì)應(yīng)地址的返回結(jié)果。

Config 分布式配置中心

在分布式系統(tǒng)中,由于服務(wù)的數(shù)量非常多,配置文件分散在不同的微服務(wù)項(xiàng)目中,管理不方便。為了方便配置文件集中管理,需要分布式配置中心組件。

Config它支持配置文件放在配置服務(wù)的本地,也支持放在遠(yuǎn)程Git倉(HItHub,Git)。

Bus 服務(wù)總線

作用是:在不重啟微服務(wù)的情況下更新配置文件。

Bus是輕量級(jí)的消息代理,將分布式的節(jié)點(diǎn)連接起來,可以用于廣播配置文件的更改或者服務(wù)的監(jiān)控管理。也就是消息總線可以為微服務(wù)做監(jiān)控,也可以實(shí)現(xiàn)程序之間的相互通信。

Spring Cloud Bus可選的消息代理有 RabbitMQ和Kafks。

差多就這么多組件了,總結(jié)的不太太好多見諒喲?。?!

————————————————

版權(quán)聲明:本文為CSDN博主「love_java_life」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/love_java_life/article/details/105175860

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容