在 Spring Cloud 中,我使用 Ribbon 或 Feign 作为客户端 API,并且我们在 Eureka 中注册了一个服务器集群。在我的情况下,我想使用特定的键来确定我要调用哪个服务器,例如:server-A
有两个实例,localhost:8001
并且localhost:8002
我想8001
通过设置来调用loadBalancerKey
to 8001
,之后我可以编写我的自定义余额规则类来选择我可以像下面这样调用哪个服务器:
public class MyConfigBalanceRule extends ClientConfigEnabledRoundRobinRule {
@Override
public Server choose(Object key) {
List<Server> serverList = getLoadBalancer().getAllServers();
for (Server srv : serverList) {
if (srv.getPort == key) {
return srv;
}
}
}
}