Ribbon
Ribbon 是一個基於 HTTP 和 TCP 客戶端的負載均衡器它可以在客戶端配置 ribbonServerList(服務端列表),然后輪詢請求以實現均衡負載它在聯合 Eureka 使用時ribbonServerList 會被 DiscoveryEnabledNIWSServerList 重寫,擴展成從 Eureka 注冊中心獲取服務端列表同時它也會用 NIWSDiscoveryPing 來取代 IPing,它將職責委托給 Eureka 來確定服務端是否已經啟動。
Feign
注意:spring-cloud-starter-feign 里面已經包含了 spring-cloud-starter-ribbon(Feign 中也使用了 Ribbon)
ribbon和feign兩個的區別和選擇
-
選擇feign
-
默認集成了ribbon
-
寫起來更加思路清晰和方便
-
采用注解方式進行配置,配置熔斷等方式方便
-
-
在product-service類中,加入
try { TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); }
會出現這個情況:
原因:默認optons readtimeout是60,但是由於hystrix默認是1秒超時。
解決方法:
#修改調用超時時間
#ribbon的超時時間
ribbon