当前位置: 首页 > 知识库问答 >
问题:

使用预过滤器和eureka的Zuul动态路由

龙晟睿
2023-03-14

我正在创建一个由3个(服务a、服务B和服务C)微服务组成的示例。所有3项服务以及网关服务(zuul)都在eureka注册。我的用例是:

1) 所有请求都将通过网关服务进入系统——正常工作

2) 对于每个针对服务C的请求,网关服务应该首先调用服务A来执行某些操作。当服务A做出肯定响应时,请求应该被转发到服务B。一旦服务A和服务B都做出肯定响应,请求最终应该被转发到服务C。

我想使用zuul路由过滤器和eureka动态实现上述用例。我查看了预降解过滤器,并尝试执行以下操作。我的网关服务正在8080端口上运行

zuul:
  routes:
    all:
      path: /** 
      url: http://localhost:8761


public class CustomFilter extends ZuulFilter{

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() {
        RequestContext ctx = RequestContext.getCurrentContext();
        ctx.set("serviceId", “service-a”);
        ctx.setRouteHost(new URL("http://localhost:8080”));

        return null;
    }

    @Override
    public String filterType() {
        return "pre";
    }

    @Override
    public int filterOrder() {
        return 1;
    }

}

共有1个答案

丁承德
2023-03-14

正如@Grinish所说,Zuul似乎不支持我的意图。最后,我使用假客户端从Zuul预过滤器内部调用服务A和B。

 类似资料:
  • 路由在微服务体系结构的一个组成部分。例如,/可以映射到您的Web应用程序,/api/users映射到用户服务,并将/api/shop映射到商店服务。Zuul是Netflix的基于JVM的路由器和服务器端负载均衡器。 Netflix使用Zuul进行以下操作: 认证 洞察 压力测试 金丝雀测试 动态路由 服务迁移 负载脱落 安全 静态响应处理 主动/主动流量管理 Zuul的规则引擎允许基本上写任何JV

  • 我有两台机器(具有相同的应用程序)注册到eureka服务器。所有对这些服务的请求都通过zuul代理。 我对后端服务的application.properties是: 我的申请。我的zuul代理的属性是: 我有两个问题: > http://localhost:9090/api/by-service/customer/1 http://localhost:9090/api/core/customer/

  • 我有一个相当简单的Spring CloudNetflix设置。我们使用Zuul作为反向代理,Eureka用于服务发现和注册。我们有我们正在慢慢窒息的遗留服务。我们有许多简单的服务,其endpoint配置如下: 因此,现在当每个服务都在eureka注册并随后向Zuul添加路由时,zuul终结点如下所示: 我想阻止Zuul将前缀从eureka服务的路由URI中剥离,以便我的Zuulendpoint如下

  • 我们在我们的环境中使用Spring Cloud Netflix Zuul和Eureka。 我知道Ribbon从Eureka获取指定serviceId的服务器列表。在我们的例子中,我们有4个服务容器,其中一个容器是执行资源密集型任务的主容器。我想从服务器列表中过滤掉主容器,这样Ribbon就不会向容器转发任何请求。 如何过滤? 任何帮助都很感激。

  • 我有两个使用Spring Boot构建的微服务(服务A和服务B),它们通过同样作为Spring Boot应用构建的Zuul代理进行路由,我检查了Zuul代理是否工作正常。然而,我试图做的是编写一个自定义路由类型ZUlpilter,当服务B收到请求时,它应该首先路由到服务a。以下是我需要的帮助: > 我想知道一个路由过滤器的例子,因为我在搜索互联网后什么都看不到。我得到的是一些预过滤的例子,Netf