springcloud之使用feign進行客戶端負載均衡

在講feign之前,還是先提下feign的概念,然後通過幾個簡單的案例來說明下如何去使用feign。

Feign是什麼呢?Feign是一個聲明式WebService客戶端。使用Feign能讓編寫Web Service客戶端更加簡單, 它的使用方法是定義一個接口,然後在上面添加註解,同時也支持JAX-RS標準的註解。Feign也支持可拔插式的編碼器和解碼器。Spring Cloud對Feign進行了封裝,使其支持了Spring MVC標準註解和HttpMessageConverters。Feign可以與Eureka和Ribbon組合使用以支持負載均衡。
Feign旨在使編寫Java Http客戶端變得更容易。 前面在使用Ribbon+RestTemplate時,利用RestTemplate對http請求的封裝處理,形成了一套模版化的調用方法。但是在實際開發中,由於對服務依賴的調用可能不止一處,往往一個接口會被多處調用,所以通常都會針對每個微服務自行封裝一些客戶端類來包裝這些依賴服務的調用。所以,Feign在此基礎上做了進一步封裝,由他來幫助我們定義和實現依賴服務接口的定義。在Feign的實現下,我們只需創建一個接口並使用註解的方式來配置它(以前是Dao接口上面標註Mapper註解,現在是一個微服務接口上面標註一個Feign註解即可),即可完成對服務提供方的接口綁定,簡化了使用Spring cloud Ribbon時,自動封裝服務調用客戶端的開發量。

那麼在應用中如何去使用我們的feign呢?當然首先肯定是需要在客戶端引入我們的feign依賴了。

	    <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

然後需要編寫一個interface,裏面放對應的server需要調用的所有服務,然後加上@FeignClient()註解即可:
在這裏插入圖片描述
如圖,microservice-order代表需要調用的微服務的名字,然後具體的方法表示需要調用的接口,
在這裏插入圖片描述
然後啓動類上需要加上一個註解,@EnableFeignClients表示開啓我們的feign支持。
在這裏插入圖片描述
具體調用的時候只需要你將具體的feign類注入進來,然後調用相關方法即可。
在這裏插入圖片描述
可以看到,同樣完成了負載均衡效果。

而與Ribbon不同的是,通過feign只需要定義服務綁定接口且以聲明式的方法,不用再代碼裏面寫很多的硬編碼,同時,減少了大量代碼冗餘,優雅而簡單的實現了服務調用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章