这个篇文章基于《SpringCloud 学习(3):eureka集群》:
自定义负载均衡规则类
- 定义MyRule.java
import com.netflix.loadbalancer.ILoadBalancer;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.Server;
import javax.xml.ws.Service;
import java.util.List;
import java.util.Random;
/**
* @author: lqh
* @description: 自定义负载均衡规则类
* @program: consultingPlatform
* @create: 2018-06-26 09:58
**/
public class MyRule implements IRule {
ILoadBalancer iLoadBalancer;
@Override
public Server choose(Object o) {
System.out.println("自定义规则类...");
Random random = new Random();
int num = random.nextInt(10);
Server server = null;
List<Server> serverList = iLoadBalancer.getAllServers();
if (num > 8) {
for (Server server1 : serverList) {
if(server1.getPort()==2001){
server = server1;
}
}
}else {
for (Server server1 : serverList) {
if(server1.getPort()==2002){
server = server1;
}
}
}
return server;
}
@Override
public void setLoadBalancer(ILoadBalancer iLoadBalancer) {
this.iLoadBalancer = iLoadBalancer;
}
@Override
public ILoadBalancer getLoadBalancer() {
return iLoadBalancer;
}
}
- 在配置文件中指定loadBalance规则类
#指定loadBalance规则类
police.ribbon.NFLoadBalancerRuleClassName=com.warrior.controller.MyRule