SpringCloud之Feign和Ribbon的選擇(五)


Ribbon

Ribbon 是一個基於 HTTP 和 TCP 客戶端的負載均衡器它可以在客戶端配置 ribbonServerList(服務端列表),然后輪詢請求以實現均衡負載它在聯合 Eureka 使用時ribbonServerList 會被 DiscoveryEnabledNIWSServerList 重寫,擴展成從 Eureka 注冊中心獲取服務端列表同時它也會用 NIWSDiscoveryPing 來取代 IPing,它將職責委托給 Eureka 來確定服務端是否已經啟動。

Feign

Spring Cloud Netflix 的微服務都是以 HTTP 接口的形式暴露的,所以可以用 Apache 的 HttpClient 或 Spring 的 RestTemplate 去調用而 Feign 是一個使用起來更加方便的 HTTP 客戶端,它用起來就好像調用本地方法一樣,完全感覺不到是調用的遠程方法總結起來就是:發布到注冊中心的服務方接口,是 HTTP 的,也可以不用 Ribbon 或者 Feign,直接瀏覽器一樣能夠訪問只不過 Ribbon 或者 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:
ReadTimeout: 3000
ConnectTimeout: 3000

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM