参考《springcloud系列7——通过代码自定义配置ribbon》,将microservice-springcloud-movie中应用启动类中的@RibbonClient注释。这里是继续《springcloud系列7——通过代码自定义配置ribbon》测试的。

配置文件修改

在application.yml中增加下面的配置:

1
2
3
4
# 定义访问microservice-springcloud-user服务随机访问
microservice-springcloud-user:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

测试

  • 1.启动Eureka Server;
  • 2.microservice-springcloud-user中分别修改端口为7902,7904,然后分别启动;
  • 3.microservice-springcloud-user中分别修改端口为7903,7905,spring.application.name修改为microservice-springcloud-user2,然后分别启动;
  • 4.启动microservice-springcloud-movie;
    浏览器输入http://localhost:8761/,可以看到:

    提供microservice-springcloud-user和microservice-springcloud-user2服务的分别有2个。

microservice-springcloud-user服务随机访问测试

在浏览器输入http://localhost:7901/user/1多次,查看控制台:


可以看到一个控制台打印了2条SQL,一个控制台打印了4条SQL。说明是随机的。

microservice-springcloud-user默认负载均衡规则测试

Ribbon默认使用的负载均衡策略是轮询,在上面的配置文件中,只对microservice-springcloud-user配置了随机访问,那么microservice-springcloud-user2应该是轮询的。下面测试一下。
在浏览器输入http://localhost:7901/test,查看microservice-springcloud-movie控制台:

可以看到microservice-springcloud-user是随机访问,microservice-springcloud-user2是轮询的。

参考

Spring Cloud官方文档Customizing the Ribbon Client using propertiesCustomizing the Ribbon Client using properties部分。


注意:Spring Cloud官方文档提到的使用负载均衡规则的优先级:配置文件 > 代码自定义 > 系统默认。