不會經過閘道器
分析下feign原理,feign主要是使用動態代理
Feign的原始碼實現的過程如下:
首先透過@EnableFeignCleints註解開啟FeignCleint
根據Feign的規則實現介面,並加@FeignCleint註解
程式啟動後,會進行包掃描,掃描所有的@ FeignCleint的註解的類,並將這些資訊注入到ioc容器中。
當介面的方法被呼叫,透過jdk的代理,來生成具體的RequesTemplate
RequesTemplate在生成Request
Request交給Client去處理,其中Client可以是HttpUrlConnection、HttpClient也可以是Okhttp
最後Client被封裝到LoadBalanceClient類,這個類結合類Ribbon做到了負載均衡。
Ribbon透過維護的服務列表,透過feign的name屬性找到真實的ip和埠
Ribbon實際是封裝了restTemplate
所以feign其實是透過http請求找到對應的服務而不是閘道器.
不會經過閘道器
分析下feign原理,feign主要是使用動態代理
Feign的原始碼實現的過程如下:
首先透過@EnableFeignCleints註解開啟FeignCleint
根據Feign的規則實現介面,並加@FeignCleint註解
程式啟動後,會進行包掃描,掃描所有的@ FeignCleint的註解的類,並將這些資訊注入到ioc容器中。
當介面的方法被呼叫,透過jdk的代理,來生成具體的RequesTemplate
RequesTemplate在生成Request
Request交給Client去處理,其中Client可以是HttpUrlConnection、HttpClient也可以是Okhttp
最後Client被封裝到LoadBalanceClient類,這個類結合類Ribbon做到了負載均衡。
Ribbon透過維護的服務列表,透過feign的name屬性找到真實的ip和埠
Ribbon實際是封裝了restTemplate
所以feign其實是透過http請求找到對應的服務而不是閘道器.