nginx與feign的差別
服務端的負載均衡nginx
nginx是用戶端的所有請求統一交給nginx,由nginx進行實作負載均衡請求轉發,屬于伺服器端負載均衡
即伺服器端進行轉發
本地負載均衡feign
Ribbon是從eureka注冊中心伺服器端上擷取服務注冊資訊清單,緩存到本地,然後在本地實作輪詢負載均衡政策。
即在用戶端實作負載均衡。
應用場景的差別
Nginx适合于伺服器端實作負載均衡,比如Tomcat,Ribbon适合在于微服務中RPC遠端調用實作本地服務負載均衡,比如Dubbo,SpringCloud中都是采用本地負載均衡
最終我選擇了feign來進行負載均衡:
Feign 是在 Ribbon的基礎上進行了一次改進,是一個使用起來更加友善的 HTTP 用戶端。采用接口的方式,隻需要建立一個接口,面向接口;然後在上面添加注解即可,将需要調用的其他服務的方法定義成抽象方法即可, 不需要自己建構http請求。然後就像是調用自身工程的方法調用,而感覺不到是調用遠端方法,使得編寫 用戶端變得非常容易。類似于 mybatis 的 @Mapper注解 。
原因有以下幾點:
- feign本身裡面就包含有了ribbon
- feign自身是一個聲明式的僞http用戶端,寫起來更加思路清晰和友善
- fegin是一個采用基于接口的注解的程式設計方式,更加簡便