三豐 soft張三丰spring
Feign 的英文表意爲「僞裝,假裝,變形」, 是一個http請求調用的輕量級框架,能夠以Java接口註解的方式調用Http請求,而不用像Java中經過封裝HTTP請求報文的方式直接調用。Feign經過處理註解,將請求模板化,當實際調用的時候,傳入參數,根據參數再應用到請求上,進而轉化成真正的請求,這種請求相對而言比較直觀。編程
在服務調用的場景中,咱們常常調用基於Http協議的服務,而咱們常常使用到的框架可能有HttpURLConnection、Apache HttpComponnets、OkHttp3 、Netty等等,這些框架在基於自身的專一點提供了自身特性。而從角色劃分上來看,他們的職能是一致的提供Http調用服務。具體流程以下:架構
feign.hystrix.enabled=false feign的調用過程當中是否啓用hystrix,默認false feign.httpclient.enabled=ture 是否使用httpclient來調用接口,默認true;要使用httpclient還須要引入feign-httpclient依賴 feign.okhttp.enabled=false 是否使用okhttp來調用接口,默認false;要使用okhttp需把改屬性設爲true,還須要引入feign-httpclient依賴負載均衡
1.啓動類使用的註解不一樣,Ribbon用的是@RibbonClient,Feign用的是@EnableFeignClients。框架
2.服務的指定位置不一樣,Ribbon是在@RibbonClient註解上聲明,Feign則是在定義抽象方法的接口中使用@FeignClient聲明。ide
3.調用方式不一樣,Ribbon須要本身構建http請求,模擬http請求而後使用RestTemplate發送給其餘服務,步驟至關繁瑣。微服務
Feign則是在Ribbon的基礎上進行了一次改進,採用接口的方式,將須要調用的其餘服務的方法定義成抽象方法便可, 不須要本身構建http請求。不過要注意的是抽象方法的註解、方法簽名要和提供服務的方法徹底一致。編碼
1.Feign調用其餘微服務API時可使用統一的HTTPZ請求模板,包含請求參數,URL等信息,便於管理維護。Ribbon的請求經過RestTemplate調用其餘微服務API,參數經過字符串拼接在URL後面,不方便寫也不利於管理。blog
2.Spring Cloud爲Feign提供了支持Spring MVC的註解,能夠經過註解方便使用。接口
3.可插拔的註解支持,包括Feign註解和JAX-RS註解。
4.支持可插拔的HTTP編碼器和解碼器。
5.支持HTTP請求和響應的壓縮處理。
6.Feign支持Hystrix和他的回退功能
7.Feign支持Ribbon的負載均衡功能