4.OpenFeign的實現原理是什么?
在使用OpenFeign的時候,主要關心兩個注解,@EnableFeignClients
和@FeignClient
。整體的流程分為以下幾個部分:
- 啟用Feign代理,通過在啟動類上添加
@EnableFeignClients
注解,開啟Feign代理對象的構建與裝配功能。 - 掃描FeignClient,
@EnableFeignClients
注解中的FeignClientsRegister
會掃描所有標注了@FeignClient
注解的接口。 - 注入代理對象,對掃描到的Feign客戶端接口,Spring會動態創建遠程調用的代理對象,并將這些代理對象注冊到Spring容器中。
- 調用遠程服務,基于
RequestTemplate
生成具體的Request
實例,通過負載均衡(如Ribbon或Spring Cloud LoadBalancer)選擇合適的服務實例。
在啟動類上添加@EnableFeignClients注解,這個注解會掃描所有標注@FeignClient注解的接口,并創建遠程代理對象,將這些代理對象添加到Spring容器中。調用遠程服務時,會先基于RequestTemplate生成具體的請求實例,然后通過負載均衡器(Ribbon或者LoadBalancer)選擇合適的服務實例。
5.如何實現微服務間的遠程調用?
微服務間的遠程調用可以分為兩種,第一種采用Nacos服務注冊發現,然后RestTemplate實現遠程調用,這種方式比較蠻煩。第二種是采用Openfeign實現遠程調用,我們不需要關注底層的實現細節。我們在項目中采用的是OpenFeign實現遠程調用的,具體的實現步驟如下:
- 首先在購物車微服務中引入
OpenFeign
和loadBalancer
依賴。 - 然后,在啟動類上添加
@EnableFeignClients
注解,啟動OpenFeign功能。 - 最后在購物車服務中定義一個新的接口,編寫Feign客戶端。Feign客戶端客戶端只需要實現接口,不需要實現方法。在接口上添加
@FeignClient
注解,里面聲明需要調用的微服務名即可。
實現微服務間的遠程調用主要有兩種方式,第一種是先通過Nacos服務注冊發現獲取到服務實例列表,然后通過RestTemplat實現遠程調用。第二種方法是基于Openfeign實現遠程服務調用,如果采用OpenFeign的方法就不需要關注底層的實現細節。