Spring Cloud Ribbon配置详解

it2022-05-05  113

概述

有时候需要自定义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注解。

 

 

 

转载于:https://www.cnblogs.com/liuenyuan1996/p/10288570.html

相关资源:DirectX修复工具V4.0增强版

最新回复(0)