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

     

  • 相关阅读:
    做接口测试最重要的知识点
    HTTP和HTTPS区别
    UVA, 686 Goldbach's Conjecture (II)
    UVA, 543 Goldbach's Conjecture
    UVA, 580 Critical Mass
    UVA, 900 Brick Wall Patterns
    UVA, 11000 Bee
    UVA, 10079 Pizza Cutting
    C++ 向量<vector>的学习
    jenkins入门
  • 原文地址:https://www.cnblogs.com/liuenyuan1996/p/10288570.html
Copyright © 2020-2023  润新知