使用 Zuul 基于 Eureka 元数据过滤服务

Posted

技术标签:

【中文标题】使用 Zuul 基于 Eureka 元数据过滤服务【英文标题】:Filter services based on Eureka metadata with Zuul 【发布时间】:2021-11-26 01:30:58 【问题描述】:

我们在环境中使用 Spring Cloud Netflix Zuul 和 Eureka。

我了解 Ribbon 从 Eureka 获取指定 serviceId 的服务器列表。在我们的例子中,我们有 4 个服务容器,其中一个容器是执行资源密集型任务的主容器。 我想从服务器列表中过滤掉主容器,以便 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;

【讨论】:

以上是关于使用 Zuul 基于 Eureka 元数据过滤服务的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud - Zuul路由网关

SpringCloud之zuul网关

路由网关(zuul)

SpringCloud的Zuul路由网关

SpringCloud-Zuul

zuul路由网关