参考《springcloud系列7——通过代码自定义配置ribbon》,将microservice-springcloud-movie中应用启动类中的@RibbonClient注释。这里是继续《springcloud系列7——通过代码自定义配置ribbon》测试的。
配置文件修改
在application.yml中增加下面的配置:
# 定义访问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 properties中Customizing the Ribbon Client using properties
部分。
注意:Spring Cloud官方文档提到的使用负载均衡规则的优先级:配置文件 > 代码自定义 > 系统默认。