首先在我们2.x 版本eureka 依赖中是包含ribbon,所以不需要再重复引入
ribbon使用的是 template的形式
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced //负载均衡
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
默认使用轮询的方式,如果需要使用其他方式可以在启动类上加入@RibbonClient(name = “CLOUD-PAYMENT-SERVICE”, configuration = MySelfRule.class) //更换轮训规则
name 属性为指定对应的服务, configuration 为指定负载均衡方法。
@Configuration
public class MySelfRule {
@Bean
public IRule myRule(){
return new RandomRule();
}
}
注意这个类不能被spring扫描到,否则无法为指定模块 设置负载均衡规则
最后我们也可以自定义负载均衡的规则
@Slf4j
public class ZRule extends AbstractLoadBalancerRule {
private int count = 1;
public void initWithNiwsConfig(IClientConfig iClientConfig) {
//nothing
}
public Server choose(Object key) {
ILoadBalancer loadBalancer = getLoadBalancer();
List<Server> allServers = loadBalancer.getAllServers();
List<Server> reachableServers = loadBalancer.getReachableServers();
int size = allServers.size();
Server server = allServers.get(count % size);
count++;
log.info("count:" + count);
return server;
}
}