天天看點

〖Spring Cloud〗Feign:基于服務端的負載均衡

Feign:負載均衡(基于服務端)

相關視訊教程(來自動力節點):https://www.bilibili.com/video/BV1nK4y1j7gL

Feign簡介

Feign是聲明式Web Service用戶端,它讓微服務之間的調用變得更簡單,類似controller調用service。SpringCloud內建了Ribbon和Eureka,可以使用Feigin提供負載均衡的http用戶端

隻需要建立一個接口,然後添加注解即可~

Feign,主要是社群版,大家都習慣面向接口程式設計。這個是很多開發人員的規範。

調用微服務通路兩種方法

1、微服務名字 【ribbon】

2、接口和注解 【feign】

Feign能幹什麼?

Feign旨在使編寫Java Http用戶端變得更容易

前面在使用Ribbon + RestTemplate時,利用RestTemplate對Http請求的封裝處理,形成了一套模闆化的調用方法。但是在實際開發中,由于對服務依賴的調用可能不止一處,往往一個接口會被多處調用,是以通常都會針對每個微服務自行封裝一個用戶端類來包裝這些依賴服務的調用。

是以,Feign在此基礎上做了進一步的封裝,由他來幫助我們定義和實作依賴服務接口的定義,在Feign的實作下,我們隻需要建立一個接口并使用注解的方式來配置它 (類似以前Dao接口上标注Mapper注解,現在是一個微服務接口上面标注一個Feign注解),即可完成對服務提供方的接口綁定,簡化了使用Spring Cloud Ribbon 時,自動封裝服務調用用戶端的開發量。

Feign預設內建了Ribbon

利用Ribbon維護了MicroServiceCloud-Dept的服務清單資訊,并且通過輪詢實作了用戶端的負載均衡,而與Ribbon不同的是,通過Feign隻需要定義服務綁定接口且以聲明式的方法,優雅而簡單的實作了服務調用。

Feign和Ribbon二者對比,前者顯現出面向接口程式設計特點,代碼看起來更清爽,而且Feign調用方式更符合我們之前在做SSM或者SprngBoot項目時,Controller層調用Service層的程式設計習慣!

Feign和Ribbon如何選擇?

根據個人習慣而定,如果喜歡REST風格使用Ribbon;如果喜歡社群版的面向接口風格使用Feign.

Feign 本質上也是實作了 Ribbon,隻不過後者是在調用方式上,為了滿足一些開發者習慣的接口調用習慣!