天天看點

Feign與Ribbon實作負載均衡的差別

nginx與feign的差別

服務端的負載均衡nginx

nginx是用戶端的所有請求統一交給nginx,由nginx進行實作負載均衡請求轉發,屬于伺服器端負載均衡

即伺服器端進行轉發

本地負載均衡feign

Ribbon是從eureka注冊中心伺服器端上擷取服務注冊資訊清單,緩存到本地,然後在本地實作輪詢負載均衡政策。

即在用戶端實作負載均衡。

應用場景的差別

Nginx适合于伺服器端實作負載均衡,比如Tomcat,Ribbon适合在于微服務中RPC遠端調用實作本地服務負載均衡,比如Dubbo,SpringCloud中都是采用本地負載均衡

最終我選擇了feign來進行負載均衡:

Feign 是在 Ribbon的基礎上進行了一次改進,是一個使用起來更加友善的 HTTP 用戶端。采用接口的方式,隻需要建立一個接口,面向接口;然後在上面添加注解即可,将需要調用的其他服務的方法定義成抽象方法即可, 不需要自己建構http請求。然後就像是調用自身工程的方法調用,而感覺不到是調用遠端方法,使得編寫 用戶端變得非常容易。類似于 mybatis 的 @Mapper注解 。

原因有以下幾點:

  1. feign本身裡面就包含有了ribbon
  2. feign自身是一個聲明式的僞http用戶端,寫起來更加思路清晰和友善
  3. fegin是一個采用基于接口的注解的程式設計方式,更加簡便

繼續閱讀