0404-Ribbon通过代码自定义配置、使用配置文件自定义Ribbon Client

一、官方文档解读

官方地址:https://cloud.spring.io/spring-cloud-static/Edgware.SR3/single/spring-cloud.html#_customizing_the_ribbon_client

二、自定义Ribbon客户端-配置类

2.1、自定义负载规则

步骤一、增加TestConfiguration配置类

@Configuration
public class TestConfiguration {
    public IRule ribbonRule() {
        return new RandomRule();//随机负载
    }
}

其中:RibbonClient中name 微服务名称,configuration配置类

注意:configuration等于的TestConfiguration必须是@Configuration,但要注意它不在主应用程序上下文的@ComponentScan中,否则它将被所有@RibbonClients共享。如果使用@ComponentScan(或@SpringBootApplication),则需要采取措施以避免包含它(例如,将其放在单独的,不重叠的包中,或者指定要在@ComponentScan中显式扫描的包)。

方式1、TestConfiguration不放在spring boot启动类的当前包或子包中即可

方式2、如果TestConfiguration确实需要放在当前包,需要设置如下

  增加注解

public @interface ExcludeFromComponentScan {

}

  将注解增加至TestConfiguration

@Configuration
@ExcludeFromComponentScan
public class TestConfiguration {
    public IRule ribbonRule() {
        return new RandomRule();
    }
}

  将排除注解增加至启动类

@ComponentScan(excludeFilters= {@ComponentScan.Filter(type=FilterType.ANNOTATION,value=ExcludeFromComponentScan.class)})

步骤二、将:@RibbonClient(name = "microservice-provider-user", configuration = TestConfiguration.class)放到启动类中

  多个可以@RibbonClient(name = "microservice-provider-user2", configuration = TestConfiguration.class)

此时只是自定义的按照新的规则负载,原有的还是按照默认的轮询方式使用

2.2、源码查看

查看:@RibbonClient注解发现主要属性为 RibbonClientConfiguration,查看其实现

Spring Cloud Netflix默认为Ribbon提供以下Bean(BeanType beanName:ClassName):

  • IClientConfig ribbonClientConfig: DefaultClientConfigImpl
  • IRule ribbonRule: ZoneAvoidanceRule
  • IPing ribbonPing: DummyPing
  • ServerList<Server> ribbonServerList: ConfigurationBasedServerList
  • ServerListFilter<Server> ribbonServerListFilter: ZonePreferenceServerListFilter
  • ILoadBalancer ribbonLoadBalancer: ZoneAwareLoadBalancer
  • ServerListUpdater ribbonServerListUpdater: PollingServerListUpdater

三、自定义Ribbon客户端-配置文件

  从1.2.0版开始,Spring Cloud Netflix现在支持使用属性自定义Ribbon客户端以与Ribbon文档兼容。

配置属性

<clientName>.ribbon.:
NFLoadBalancerClassName: should implement ILoadBalancer
NFLoadBalancerRuleClassName: should implement IRule
NFLoadBalancerPingClassName: should implement IPing
NIWSServerListClassName: should implement ServerList
NIWSServerListFilterClassName should implement ServerListFilter

注意:配置优先级高于代码自定义和默认配置,并且不会有代码方式的干扰

示例

users: #微服务名称
  ribbon:
    NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBasedServerList
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule

原文地址:https://www.cnblogs.com/bjlhx/p/8859088.html

时间: 2024-08-06 13:39:03

0404-Ribbon通过代码自定义配置、使用配置文件自定义Ribbon Client的相关文章

C# 快捷使用自定义配置节点

C#除了appSettings和connectionStrings默认配置外还允许用户自定义使用配置.C# 提供3中简单的自定义配置,配置文件如下 <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="Config1" type="System.Configuration.S

spring boot--日志、开发和生产环境切换、自定义配置

Spring Boot日志常用配置: # 日志输出的地址:Spring Boot默认并没有进行文件输出,只在控制台中进行了打印 logging.file=/home/zhou # 日志级别 debug-> info -> warning -> error # 默认级别为 info # 如果设置了debug=true的时候,日志级别会自动降低为debug # ROOT代表默认全局设置 logging.level.ROOT=INFO # 可以设置指定包的输出级别,这样的话,指定的包,级别以下

App.config和Web.config配置文件的自定义配置节点

前言 昨天修改代码发现了一个问题,由于自己要在WCF服务接口中添加了一个方法,那么在相应调用的地方进行更新服务就可以了,不料意外发生了,竟然无法更新.左查右查终于发现了问题.App.config配置文件中的配置貌似出现了问题.查找节点发现是如下节点: <configSections> <section name="Test1" type="Demo.Section1,Demo"/> .............. </configSect

spring-cloud: eureka之:ribbon负载均衡自定义配置(二)

有默认配置的话基本上就是轮询接口,现在我们改用自定义配置,同时支持:轮询,随机接口读取 准备工作: 1.eureka服务 2.两个user服务: 项目名:spring-cloud-user接口:7900/7901 3.两个user服务:项目名:spring-cloud-user2接口:8800/8801 4.movie服务,读取/调用user信息接口 eureka启动文件加入@EnableEurekaServer注解 @EnableEurekaServer @SpringBootApplicat

Dubbo源码分析(三):自定义Schema--基于Spring可扩展Schema提供自定义配置支持(spring配置文件中 配置标签支持)

在很多情况下,我们需要为系统提供可配置化支持,简单的做法可以直接基于Spring的标准Bean来配置,但配置较为复杂或者需要更多丰富控制的时候,会显得非常笨拙.一般的做法会用原生态的方式去解析定义好的xml文件,然后转化为配置对象,这种方式当然可以解决所有问题,但实现起来比较繁琐,特别是是在配置非常复杂的时候,解析工作是一个不得不考虑的负担.Spring提供了可扩展Schema的支持,这是一个不错的折中方案,完成一个自定义配置一般需要以下步骤: 设计配置属性和JavaBean 编写XSD文件 编

spring-boot 速成(4) 自定义配置

spring-boot 提供了很多默认的配置项,但是开发过程中,总会有一些业务自己的配置项,下面示例了,如何添加一个自定义的配置: 一.写一个自定义配置的类 package com.example.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component

MVC自定义配置

ASP.NET 5 入门 (2) – 自定义配置 ASP.NET 5 理解和入门 建立和开发ASP.NET 5 项目 初步理解ASP.NET5的配置 正如我的第一篇文章ASP.NET 5 (vNext) 理解和概述 所说,ASP.NET 5的具有全新的配置机制,我们可以通过以下几点来进行理解: 支持多种跨平台的配置文件格式(如XML, Json, Ini和环境变量) 标准的配置文件如project.json不再包括任何自定义的配置信息. 自定义的配置完全由开发者另行建立和加载 自定义的配置信息可

ASP.NET 5 入门 (2) – 自定义配置

ASP.NET 5 入门 (2) – 自定义配置 ASP.NET 5 理解和入门 建立和开发ASP.NET 5 项目 初步理解ASP.NET5的配置 正如我的第一篇文章ASP.NET 5 (vNext) 理解和概述 所说,ASP.NET 5的具有全新的配置机制,我们可以通过以下几点来进行理解: 支持多种跨平台的配置文件格式(如XML, Json, Ini和环境变量) 标准的配置文件如project.json不再包括任何自定义的配置信息. 自定义的配置完全由开发者另行建立和加载 自定义的配置信息可

基于Spring的可扩展Schema进行开发自定义配置标签支持

一.背景 最近和朋友一起想开发一个类似alibaba dubbo的功能的工具,其中就用到了基于Spring的可扩展Schema进行开发自定义配置标签支持,通过上网查资料自己写了一个demo.今天在这里进行和大家分享,也记录下方便以后复习备忘. 二.demo测试环境 1.JDK1.7 2.spring 4.2.5.RELEASE 3.基于Maven 4.开发工具Eclipse 三.项目介绍 1.实现步骤分析 [1].设计配置属性并开发JavaBean. [2].编写xsd文件. [3].编写Nam

app.config 配置多项 配置集合 自定义配置(3)

再说说利用app.config配置多个自定义的方法.先看这个例子:美国家庭Simpson的家里有父亲母亲和三个儿女,而中国的老王只有独生子女.结构如下: <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <sectionGroup type="Family.SectionGroups,Family" name=