Spring Cloud Ribbon配置詳解


概述

有時候需要自定義Ribbon的配置和客戶端超時配置。

自動化配置

/* 使用屬性自定義功能區客戶端 從版本1.2.0開始,Spring Cloud Netflix現在支持使用屬性與Ribbon文檔兼容來自定義功能區客戶端。即從Camden版本之后,新增了org.springframework.cloud.netflix.ribbon.PropertiesFactory類動態的為RibbonClient創建這些接口的實現

 public PropertiesFactory() {
classToProperty.put(ILoadBalancer.class, "NFLoadBalancerClassName");
classToProperty.put(IPing.class, "NFLoadBalancerPingClassName");
classToProperty.put(IRule.class, "NFLoadBalancerRuleClassName");
classToProperty.put(ServerList.class, "NIWSServerListClassName");
classToProperty.put(ServerListFilter.class, "NIWSServerListFilterClassName");
}

 


#服務名
<client-name>:
ribbon:
   #配置Ribbon負載均衡規則:IRule
  NFLoadBalancerRuleClassName: com.ley.springcloud.client.rule.MyRoundRobinRule
   #配置Ribbon實例檢查策略:IPing
  NFLoadBalancerPingClassName:
   #配置負載均衡器:ILoadBalancer
  NFLoadBalancerClassName:
   #配置服務實例清單維護機制:ServerList
  NIWSServerListClassName:
   #配置服務清單過濾機制:ServerListFilter
  NIWSServerListFilterClassName:

參數配置

對於Ribbon參數配置通常有兩種方式:全局配置以及客戶端配置

全局配置:ribbon.<key>=<value>

指定客戶端配置:<client>.ribbon.<key>=<value>格式進行配置,client可以理解為服務名

**對於Ribbon參數的key以及value類型定義,可以查看com.netflix.client.config.CommonClientConfigKey類獲取更為詳細的配置內容

沒有服務治理框架的幫助,需要為該客戶端指定具體的實例清單,指定具體的服務名來做詳細的配置

<service-name>.ribbon.listOfServers=localhost:8001,localhost:8002,localhost:8003

與Eureka結合

1:變化

2:禁用Eureka對Ribbon服務實例的維護實現


ribbon.eureka.enabled=false

Ribbon重試機制

從Camden SR2版本開始,Spring Cloud整合Spring Retry來增強RestTemplate的重試能力。通過RestTemplate實現的服務訪問就會自動根據配置來實現重試機制

配置示例


spring:
cloud:
  loadbalancer:
    retry:
      enabled: true #開啟重試機制
#ribbon配置,key-value配置類:CommonClientConfigKey
#need add spring retry
#服務名
eureka-provider:
ribbon:
  ConnectTimeout: 250 #單位ms,請求連接超時時間
  ReadTimeout: 1000 #單位ms,請求處理的超時時間
  OkToRetryOnAllOperations: true #對所有操作請求都進行重試
  MaxAutoRetriesNextServer: 2 #切換實例的重試次數
  MaxAutoRetries: 1 #對當前實例的重試次數

POM添加·

        <!--spring retry(let ribbon retry) need add spring boot aop starter-->
       <dependency>
           <groupId>org.springframework.retry</groupId>
           <artifactId>spring-retry</artifactId>
       </dependency>

       <!--spring boot starter aop-->
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-aop</artifactId>
       </dependency>

啟動類加上@EnableRetry注解。

 

 

 


免責聲明!

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



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