前言
上篇文章介紹Ribbon對(duì)一個(gè)服務(wù)進(jìn)行負(fù)載,使用的默認(rèn)的策略(輪詢RoundRobinRule),下面介紹不同的服務(wù)如何使用不同的負(fù)載均衡策略。
Riddon負(fù)載均衡策略
在SpringCloud中使用
1.方法一
創(chuàng)建配置類
@Configuration
public class MyRibbonConfig {
@Bean
public IRule ribbonRule() {
//隨機(jī)策略
return new RandomRule();
}
}
啟動(dòng)類上加注解
@RibbonClient(name = "user-provider", configuration = MyRibbonConfig.class)
說明
上面的基礎(chǔ)是又啟動(dòng)了倆個(gè)application name 為user-provider-2的服務(wù),
MyRibbonConfig 不能放到【啟動(dòng)類】類的同級(jí)或是子目錄下,因?yàn)檫@個(gè)類不能被@ComponentScan會(huì)掃描到,如果掃描到了,所有的服務(wù)都會(huì)使用定義的負(fù)載均衡策略,切記
測(cè)試
@GetMapping("/test")
public void test() {
ServiceInstance instance = this.loadBalancerClient.choose("user-provider");
System.out.println(
"---------------: " + instance.getServiceId() + ": " + instance.getHost() + ": "
+ instance
.getPort());
// System.out.println(instance.toString());
ServiceInstance instance1 = this.loadBalancerClient.choose("user-provider-2");
System.out.println(
"++++++++++++++++: " + instance1.getServiceId() + ": " + instance1.getHost() + ": "
+ instance1
.getPort());
}
結(jié)果
result.png
我們可以看到【user-provider】倆個(gè)服務(wù)是隨機(jī)調(diào)用的,【user-provider-2】倆個(gè)服務(wù)是輪詢調(diào)用的
- 方法二
如果就像想把MyRibbonConfig放到啟動(dòng)類及啟動(dòng)類所在包的子包下,使用以下方法。
自定義一個(gè)空注解
public @interface ExcudeAnnotatio {
}
配置類上加自定義的注解
config.png
啟動(dòng)類上加過濾注解
run.png
結(jié)果
同上
- 方法三
配置文件配置
不需要加任何配置類,在application.yml中加
user-provider:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
禁用Eureka
ribbon:
eureka:
enabled: false
user-provider:
ribbon:
listOfServers: localhost:8080
user-provider-2:
ribbon:
listOfServers: localhost:8083,localhost:8082
如果禁止了Eureka,只會(huì)訪問ribbon指定的服務(wù),如果不禁止,下面配置不生效