原来的Ribbon,我这里指的是2020版本之前的,eureka中是自动包含Ribbon的,如果spring-cloud是2020版本以后的,点击下方链接:
我们先来看看如何配置:
1.新建配置类
这个自定义配置类不能放在@ComponentScan所扫描的当前包下以及子包下,否则我们自定义的这个配置类就会被所有的Ribbon客户端所共享,达不到特殊化定制的目的了。

package com.cloud.myrule;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MySelfRule {
@Bean
public IRule myRule(){
return new RandomRule();//定义为随机
}
}
IRure指定的算法有以下几种:

可以更具需要的算法配置。
2.配置启动类
@RibbonClient(name = "CLOUD-PAYMENT-SERVICE",configuration = MySelfRule.class)
CLOUD-PAYMENT-SERVICE:指的是服务集群的名称
MySelfRule.class:是你刚刚定义的配置类
package com.atguigu.springcloud;
import com.atguigu.myrule.MySelfRule;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
@EnableEurekaClient
@SpringBootApplication
@RibbonClient(name = "CLOUD-PAYMENT-SERVICE",configuration = MySelfRule.class)
public class OrderMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderMain80.class,args);
}
}
配置好后,启动项目,访问集群中的服务,就会发现是随机调用的
本文介绍了如何在Spring Cloud 2020版本之后的Eureka中,通过自定义配置类实现Ribbon的负载均衡策略,重点讲解了如何创建自定义IRule并应用到服务调用中,以实现随机调用服务实例。
337





