Ribbon詳解


簡述

  Ribbon是 Netflflixfa 發布的一個負載均衡器,有助於控制 HTTP 和 TCP客戶端行為。在 SpringCloud 中,Eureka一般配合Ribbon進行使用,Ribbon提供了客戶端負載均衡的功能,Ribbon利用從Eureka中讀取到的服務信息,在調用服務節點提供的服務時,會合理的進行負載。在SpringCloud中可以將注冊中心和Ribbon配合使用,Ribbon自動的從注冊中心中獲取服務提供者的列表信息,並基於內置的負載均衡算法,請求服務。

主要功能

服務調用

  基於Ribbon實現服務調用, 是通過拉取到的所有服務列表組成(服務名-請求路徑的)映射關系。借助

RestTemplate 最終進行調用。
  我們只需在 RestTemplate配置上方加入 LoadBalanced注解即可使用Ribbon的服務調用功能
  此時的 restTemplate的url的ip地址只需寫調用的服務名稱即可,Ribbon會自動幫我們進行映射

負載均衡

  當有多個服務提供者時,Ribbon可以根據負載均衡的算法自動的選擇需要調用的服務地址

  Ribbon是一個典型的客戶端負載均衡器,Ribbon會獲取服務的所有地址,根據內部的負載均衡算法獲取本次請求的有效地址。

  當我們為restTemplate打上LoadBalanced注解時,Ribbon默認啟動了輪詢策略的負載均衡。

負載均衡策略

  Ribbon默認的負載均衡策略是輪詢策略,當然也可以自定義Ribbon的負載均衡策略。

  yml配置格式為:服務名 - ribbon - NFLoadBalancerRuleClassName :策略

##需要調用的微服務名稱
shop-service-product:
 ribbon:
   NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

Ribbon請求重試配置

  Ribbon的服務請求提供了請求重試的機制,當Ribbon請求一個服務失敗時可以設定請求重試的相關機制,讓客戶端得到更快的響應

service-product:
  ribbon:
    #NFLoadBalancerRuleClassName: 修改Ribbon的負載均衡策略
    ConnectTimeout: 250 # Ribbon的連接超時時間
    ReadTimeout: 1000 # Ribbon的數據讀取超時時間
    OkToRetryOnAllOperations: true # 是否對所有操作都進行重試
    MaxAutoRetriesNextServer: 1 # 切換實例的重試次數
    MaxAutoRetries: 1 # 對當前實例的重試次數

  

 

  

 


免責聲明!

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



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