引入Nacos需要优先排出,如果不接入,请跳过

        <!--nacos服务发现依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2021.0.1.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

配置文件需要加入关闭Ribbon即可,不然会报错!

spring.cloud.loadbalancer.ribbon.enabled=false

引入Eureka-Client会自动引入Ribbon,但是新的3.0,就没有引入,就需要我们手动添加依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>

请求进入LoadBalanceInterceptor负载均衡拦截器,

Ribbon实现的负载均衡策略

  1. com.netflix.loadbalancer.RoundRobinRule :以轮询的方式进行负载均衡。
  2. com.netflix.loadbalancer.RandomRule :随机策略
  3. com.netflix.loadbalancer.RetryRule :重试策略。
  4. com.netflix.loadbalancer.WeightedResponseTimeRule :权重策略。会计算每个服务的权重,越高的被调用的可能性越大。
  5. com.netflix.loadbalancer.BestAvailableRule :最佳策略。遍历所有的服务实例,过滤掉故障实例,并返回请求数最小的实例返回。
  6. com.netflix.loadbalancer.AvailabilityFilteringRule :可用过滤策略。过滤掉故障和请

如何定义Ribbon负载均衡的策略

1、自定义IRule Bean使其子类实现是策略对象,比如随机策略

@Bean
public IRule randomRule{
    return new RandomRule();
}

原来代码不需要修改,直接使用原来的LoadBalance测试即可

2、修改配置文件,一定在Maven依赖库看到Ribbon才可以(Cloud3.0 Eureka-Client删除了依赖)

Eureka-Client.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule

Ribbon 饥饿加载

Ribbon默认是懒加载的,第一次访问时间会变成,开启饥饿加载就可以实现快速访问了,相当于关闭懒加载

ribbon.ReadTimeout=5000
# 饥饿加载,并配置对饥饿加载对服务
ribbon.eager-load.enabled=true
ribbon.eager-load.clients=Eureka-Client