【问题标题】:Filter services based on Eureka metadata with Zuul使用 Zuul 基于 Eureka 元数据过滤服务
【发布时间】:2021-11-26 01:30:58
【问题描述】:
我们在环境中使用 Spring Cloud Netflix Zuul 和 Eureka。
我了解 Ribbon 从 Eureka 获取指定 serviceId 的服务器列表。在我们的例子中,我们有 4 个服务容器,其中一个容器是执行资源密集型任务的主容器。
我想从服务器列表中过滤掉主容器,以便 Ribbon 不会向容器转发任何请求。
如何过滤?
感谢任何帮助。
【问题讨论】:
标签:
spring-cloud
netflix-eureka
netflix-zuul
spring-cloud-netflix
netflix-ribbon
【解决方案1】:
我能够通过创建新的自定义 IRule 进行过滤
homeautomation.ribbon.NFLoadBalancerRuleClassName=com.example.CustomZoneAvoidanceRule
并扩展默认的 ZoneAvoidanceRule
public class CustomZoneAvoidanceRule extends ZoneAvoidanceRule {
@Override
public Server choose(final Object key) {
final Server server = super.choose(key);
// code to skip specific instance based on eureka metadata.
return server;
}
}