【问题标题】:Zuul Proxy: Aggregated mapper on proxy routingZuul Proxy:代理路由上的聚合映射器
【发布时间】:2019-02-01 03:14:07
【问题描述】:

我有一个看起来像这样的应用程序

现在,每当在网关收到请求时,都会调用 Zuul 过滤器 AuthorizationInterceptor,它通过使用用户服务进行一些调用来进行身份验证/授权。如果授权成功,则调用实际的微服务。

现在有了新的要求,我需要编写一些聚合 API,它从两个服务中获取数据并合并数据。所以我在网关代理上添加了@RestController,但在调用休息控制器之前,AuthorizationInterceptor 没有被调用。即使在本地提供请求,我如何告诉ZuulFilter 被调用。

有什么解决办法吗?是否应该以不同的方式进行架构?

【问题讨论】:

    标签: spring-boot routing spring-cloud netflix-zuul


    【解决方案1】:

    我认为将这种逻辑放入网关服务中不是一个好主意。

    您指的是聚合器服务,它可以像其他两个服务一样位于网关之后,但它不存储数据或执行某些业务逻辑,它只是从其他两个服务中获取数据并将它们聚合。这样AuthorizationInterceptor 也将在网关级别被调用。

    另一种 hacky 方法是创建一个自定义 ZuulFilter 来处理虚构的端点调用并聚合数据。这样您的AuthorizationInterceptor 也会被调用,但将这种逻辑放入您的边缘服务并不是一个好主意。

    【讨论】:

    • 所以,我应该创建consumer --> Zuul Gateway --> Aggregator Microservice --> actual service 这样的工作流程??另外,有什么方法可以使用弹簧过滤器来做同样的事情吗?
    • 没错。正如我所提到的,你不应该混淆你的责任。如果需要聚合,那么只需创建一个新服务,使用 Spring Boot 非常容易。即使您以某种方式使用 Spring 过滤器执行此操作,实现和维护也会很痛苦。
    猜你喜欢
    • 1970-01-01
    • 2017-11-13
    • 2020-04-29
    • 2016-05-24
    • 2017-09-30
    • 2017-03-25
    • 1970-01-01
    • 2021-01-30
    • 2016-12-23
    相关资源
    最近更新 更多