簡(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