溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Feign/Ribbo/Hystrix三者的關(guān)系是什么

發(fā)布時(shí)間:2021-12-31 14:07:17 來(lái)源:億速云 閱讀:183 作者:iii 欄目:云計(jì)算

這篇文章主要講解了“Feign/Ribbo/Hystrix三者的關(guān)系是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Feign/Ribbo/Hystrix三者的關(guān)系是什么”吧!

一、前言

在微服務(wù)架構(gòu)的應(yīng)用中, Feign、Hystrix,Ribbon三者都是必不可少的,可以說(shuō)已經(jīng)成為鐵三角。

二、Feign介紹

Feign是一款Java語(yǔ)言編寫的HttpClient綁定器,在Spring Cloud微服務(wù)中用于實(shí)現(xiàn)微服務(wù)之間的聲明式調(diào)用。Feign 可以定義請(qǐng)求到其他服務(wù)的接口,用于微服務(wù)間的調(diào)用,不用自己再寫http請(qǐng)求,在客戶端實(shí)現(xiàn),調(diào)用此接口就像遠(yuǎn)程調(diào)用其他服務(wù)一樣,當(dāng)請(qǐng)求出錯(cuò)時(shí)可以調(diào)用接口的實(shí)現(xiàn)類來(lái)返回

Feign是一個(gè)聲明式的web service客戶端,它使得編寫web service客戶端更為容易。創(chuàng)建接口,為接口添加注解,即可使用Feign。Feign可以使用Feign注解或者JAX-RS注解,還支持熱插拔的編碼器和解碼器。Spring Cloud為Feign添加了Spring MVC的注解支持,并整合了Ribbon和Eureka來(lái)為使用Feign時(shí)提供負(fù)載均衡。

二、Ribbon介紹

Ribbon 作為負(fù)載均衡,在客戶端實(shí)現(xiàn),服務(wù)段可以啟動(dòng)兩個(gè)端口不同但servername一樣的服務(wù)

Ribbon是Netflix發(fā)布的開(kāi)源項(xiàng)目,主要功能是提供客戶端的軟件負(fù)載均衡算法,將Netflix的中間層服務(wù)連接在一起。Ribbon客戶端組件提供一系列完善的配置項(xiàng)如連接超時(shí),重試等。簡(jiǎn)單的說(shuō),就是在配置文件中列出Load Balancer后面所有的機(jī)器,Ribbon會(huì)自動(dòng)的幫助你基于某種規(guī)則(如簡(jiǎn)單輪詢,隨機(jī)連接等)去連接這些機(jī)器。我們也很容易使用Ribbon實(shí)現(xiàn)自定義的負(fù)載均衡算法。簡(jiǎn)單地說(shuō),Ribbon是一個(gè)客戶端負(fù)載均衡器

Ribbon工作時(shí)分為兩步:

    第一步:先選擇 Eureka Server, 它優(yōu)先選擇在同一個(gè)Zone且負(fù)載較少的Server;

    第二步:再根據(jù)用戶指定的策略,在從Server取到的服務(wù)注冊(cè)列表中選擇一個(gè)地址。其中Ribbon提供了多種策略,例如輪詢、隨機(jī)、根據(jù)響應(yīng)時(shí)間加權(quán)等。

三、Hystrix介紹

Hystrix作為熔斷流量控制,在客戶端實(shí)現(xiàn),在方法上注解,當(dāng)請(qǐng)求出錯(cuò)時(shí)可以調(diào)用注解中的方法返回

Hystrix熔斷器,容錯(cuò)管理工具,旨在通過(guò)熔斷機(jī)制控制服務(wù)和第三方庫(kù)的節(jié)點(diǎn),從而對(duì)延遲和故障提供更強(qiáng)大的容錯(cuò)能力。在Spring Cloud Hystrix中實(shí)現(xiàn)了線程隔離、斷路器等一系列的服務(wù)保護(hù)功能。它也是基于Netflix的開(kāi)源框架 Hystrix實(shí)現(xiàn)的,該框架目標(biāo)在于通過(guò)控制那些訪問(wèn)遠(yuǎn)程系統(tǒng)、服務(wù)和第三方庫(kù)的節(jié)點(diǎn),從而對(duì)延遲和故障提供更強(qiáng)大的容錯(cuò)能力。Hystrix具備了服務(wù)降級(jí)、服務(wù)熔斷、線程隔離、請(qǐng)求緩存、請(qǐng)求合并以及服務(wù)監(jiān)控等強(qiáng)大功能。

四、三者之間的關(guān)系圖

如果微服務(wù)項(xiàng)目加上了spring-cloud-starter-netflix-hystrix依賴,那么,feign會(huì)通過(guò)代理模式, 自動(dòng)將所有的方法用 hystrix 進(jìn)行包裝。

在Spring Cloud微服務(wù)體系下,微服務(wù)之間的互相調(diào)用可以通過(guò)Feign進(jìn)行聲明式調(diào)用,在這個(gè)服務(wù)調(diào)用過(guò)程中Feign會(huì)通過(guò)Ribbon從服務(wù)注冊(cè)中心獲取目標(biāo)微服務(wù)的服務(wù)器地址列表,之后在網(wǎng)絡(luò)請(qǐng)求的過(guò)程中Ribbon就會(huì)將請(qǐng)求以負(fù)載均衡的方式打到微服務(wù)的不同實(shí)例上,從而實(shí)現(xiàn)Spring Cloud微服務(wù)架構(gòu)中最為關(guān)鍵的功能即服務(wù)發(fā)現(xiàn)及客戶端負(fù)載均衡調(diào)用。

另一方面微服務(wù)在互相調(diào)用的過(guò)程中,為了防止某個(gè)微服務(wù)的故障消耗掉整個(gè)系統(tǒng)所有微服務(wù)的連接資源,所以在實(shí)施微服務(wù)調(diào)用的過(guò)程中我們會(huì)要求在調(diào)用方實(shí)施針對(duì)被調(diào)用微服務(wù)的熔斷邏輯。而要實(shí)現(xiàn)這個(gè)邏輯場(chǎng)景在Spring Cloud微服務(wù)框架下我們是通過(guò)Hystrix這個(gè)框架來(lái)實(shí)現(xiàn)的。

調(diào)用方會(huì)針對(duì)被調(diào)用微服務(wù)設(shè)置調(diào)用超時(shí)時(shí)間,一旦超時(shí)就會(huì)進(jìn)入熔斷邏輯,而這個(gè)故障指標(biāo)信息也會(huì)返回給Hystrix組件,Hystrix組件會(huì)根據(jù)熔斷情況判斷被調(diào)微服務(wù)的故障情況從而打開(kāi)熔斷器,之后所有針對(duì)該微服務(wù)的請(qǐng)求就會(huì)直接進(jìn)入熔斷邏輯,直到被調(diào)微服務(wù)故障恢復(fù),Hystrix斷路器關(guān)閉為止。

三者之間的關(guān)系圖,大致如下:

Feign/Ribbo/Hystrix三者的關(guān)系是什么

感謝各位的閱讀,以上就是“Feign/Ribbo/Hystrix三者的關(guān)系是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Feign/Ribbo/Hystrix三者的關(guān)系是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI