Openfeign與Ribbon


Ribbon和OpenFeign我個人為其實算是兩個東西,Ribbon側重於做服務調用時的負載均衡,而OpenFeign側重於面向接口進行服務調用。

        在只引入Ribbon依賴的時候,可以使用restTemplate來進行服務調用,大概流程如下: 

 
 

        這是沒有OpenFeign的情況下的一個執行流程。引入openFeign情況下的執行流程:

 

 
 

        OpenFeign相比Ribbon在代碼實現上是在客戶端多了一層接口,之前用ribbon的時候客戶端只有controller層,通過restTemplate請求服務端的controller層。Openfeign需要在客戶端創建一個service層,並創建一個service接口(要用到@FeignClient注解),其方法和服務端的controller里的方法相對應,之后客戶端的controller調這個接口就行了。

        OpenFeign的引入直接砍掉了restTemplate,客戶端controller在調用服務端時不需要再關注請求的方式、地址以及是forObject還是forEntity,完全面向接口調用,層次結構更加明了,而且OpenFeign自身集成Ribbon,所以默認開啟輪詢的負載均衡。(雖然Eureka也集成了ribbon,但大概是eureka已經停更了,所以openFeign集成了ribbon)。而且還可以和hystrix相結合,寫一個類實現service接口,其中實現的方法的方法體便是降級或熔斷的fallback方法(需要在接口中指定該實現類)。這樣結構更清晰,耦合也更低。

        我們不用過多去研究ribbon,它只是一個提供負載均衡的,大多時候只是更改負載均衡的算法。我們只需要編寫好feign的接口以及其降級實現類, 所以引入依賴時,只用引入OpenFeign即可。



作者:王明燦_三月
鏈接:https://www.jianshu.com/p/1158ac6f518d
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM