1

假设有 2 个后端服务:

  1. 产品服务(获取产品信息),
  2. 库存服务(获取可用数量)。

除此之外,还有一个前端 Web 应用程序来显示产品详细信息。

我在互联网上看到的所有示例都是关于前端和 API 网关是同一个应用程序并使用 Zuul 作为反向代理。

我的理解是 API 网关应该是一个单独的应用程序(层),前端应用程序应该使用它来调用后端服务。

那么Zuul有什么好处呢?为什么不直接使用 feign 为这两种服务创建客户端并为前端应用程序提供端点?

4

2 回答 2

2

Feign 客户端和 Zuul 是 Spring Cloud Netflix 中两个完全不同的组件。

Feign Client 是一个美化的 REST 模板,添加了 Retry、Fallbacks 等。你可以按照 Apache HttpClient 的思路思考

另一方面,Zuul 是代理/反向代理/网关。通常,网关应该是后端服务的公共入口点。它应该是一个单独的层,允许您添加常见的功能,如身份验证、审计、日志记录等。正如 @ootero 提到的,您可以轻松地在 Zuul 中添加过滤器来实现此功能。

于 2017-05-23T22:16:19.710 回答
1

Zuul作为Proxy服务器,不仅路由请求而且Zuul过滤器也可用于处理横切关注点,例如:

  • 地理位置
  • 令牌解密
  • 验证
  • 请求/响应操作
  • 流量整形

您提到Feign客户,这将(据我所知)与Java基于 - 的前端应用程序一起工作,如果前端应用程序是使用Angularor开发的React呢?

于 2017-05-23T21:39:14.230 回答