1. 程式人生 > >spring cloud系列教程(8)---feign使用

spring cloud系列教程(8)---feign使用

給大家推薦個靠譜的公眾號程式設計師探索之路,大家一起加油https://img-blog.csdnimg.cn/20181129224604602.png ​  

1.Feign是什麼?

Feign是一個宣告式WebService客戶端。使用Feign能讓編寫web service客戶端更加簡單,他的使用方法是定義一個介面,然後在上面添加註解,同時也支援JAX-RS標準的註解。Feign也支援可拔插式的編碼器和解碼器。Spring Cloud對Feign進行了分裝,使其支援了SpringMVC標註註解和HttpMessageConverters。Feign可以與Eureka和Ribbon組合使用以支援負載均衡

總結:Feing是一個宣告式的web服務客戶端,使得編寫web服務客戶端變得非常容易

只需要建立一個介面,然後再上面添加註解即可

官方地址 https://github.com/OpenFeign/feign

2.Feign能幹什麼?

Feign旨在是編寫JavaHttp客戶端變得更容易。

前面在使用Ribbon+RestTemplate時,利用RestRemplate對http請求的封裝處理,形成了一套模板化的呼叫方法。但是在實際開發中,由於對服務依賴的呼叫可能不止移除,往往一個介面會被多處呼叫,所以通常都會針對每個微服務自行封裝一些客戶端類來包裝這些依賴服務的呼叫。所以,Feign在此基礎上做了進一步封裝,由他來幫助我們定義和實現依賴服務介面的定義。在Feign的實現下,我們只需建立一個介面並使用註解的方式來配置它(以前是dao介面來標註mapper註解,現在是一個微服務介面上面標註一個Feign註解即可),即可完成對服務提供方的介面繫結,簡化了使用spring cloud ribbon時,自動封裝服務呼叫客戶端開發量.

3.Feign為什麼會實現負載均衡

集成了ribbon,利用ribbon維護了服務列表資訊,並且通過輪詢實現了客戶端的負載均衡,而與ribbon不同的是feign只需要定義服務繫結介面且以宣告式的方法,優雅而簡單的實現了服務呼叫。Feign通過介面的方法呼叫Rest服務(之前是ribbon+resttemplate)該請求傳送給eureka伺服器(http://CLOUD-PROVIER-DEPT/api/dept/list)通過feign直接找到服務介面,由於在進行服務呼叫的時候融合了ribbon技術,所以也支援負載均衡作用

4.程式碼編寫

common專案中編寫介面,新建consumerfeigndept子專案

程式碼地址:https://github.com/ZhZGod/spring-cloud-codes