• 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注解。

     

  • 相关阅读:
    [记录点滴] 一个解决Lua 随机数生成问题的办法
    [源码解析] 从TimeoutException看Flink的心跳机制
    [记录点滴] OpenResty中Redis操作总结
    [记录点滴] 小心 Hadoop Speculative 调度策略
    [源码解析] GroupReduce,GroupCombine 和 Flink SQL group by
    第28 章 : 理解容器运行时接口 CRI
    第27 章 : Kubernetes 安全之访问控制
    第26 章 : 理解 CNI 和 CNI 插件
    第25 章 : Kubernetes 网络模型进阶
    第24 章 : Kubernetes API 编程利器:Operator 和 Operator Framework
  • 原文地址:https://www.cnblogs.com/liuenyuan1996/p/10288570.html
Copyright © 2020-2023  润新知