feign和ribbon是Spring Cloud的Netflix中提供的兩個實現軟負載均衡的組件,Ribbon和Feign都是用於調用其他服務的,方式不同。Feign則是在Ribbon的基礎上進行了一次改進,采用接口的方式。
feign 和 ribbon 是 Spring Cloud 的 Netflix 中提供的兩個實現軟負載均衡的組件,Ribbon 和 Feign 都是用於調用其他服務的,方式不同。Feign 則是在 Ribbon 的基礎上進行了一次改進,采用接口的方式,將需要調用的其他服務的方法定義成抽象方法即可,不需要自己構建 http 請求。不過要注意的是抽象方法的注解、方法簽名要和提供服務的方法完全一致。
1.啟動類使用的注解不同,Ribbon 用的是@RibbonClient,Feign 用的是@EnableFeignClients。
2.服務的指定位置不同,Ribbon 是在@RibbonClient 注解上聲明,Feign 則是在定義抽象方法的接口中使用@FeignClient 聲明。
3.調用方式不同,Ribbon 需要自己構建 http 請求,模擬 http 請求然后使用 RestTemplate 發送給其他服務,步驟相當繁瑣。
Feign
Feign 是在 Ribbon 的基礎上進行了一次改進,是一個使用起來更加方便的 HTTP 客戶端。采用接口的方式, 只需要創建一個接口,然后在上面添加注解即可 ,將需要調用的其他服務的方法定義成抽象方法即可, 不需要自己構建 http 請求。然后就像是調用自身工程的方法調用,而感覺不到是調用遠程方法,使得編寫 客戶端變得非常容易。
Ribbon
Ribbon 是一個基於 HTTP 和 TCP 客戶端 的負載均衡的工具。它可以 在客戶端 配置 RibbonServerList(服務端列表),使用 HttpClient 或 RestTemplate 模擬 http 請求,步驟相當繁瑣。