如何在微服务中正确使用API​​网关?

时间:2017-05-22 12:45:52

标签: microservices spring-cloud netflix-zuul netflix-feign api-gateway

假设有2个后端服务:

  1. 产品服务(获取产品信息),
  2. 库存服务(获取可用数量)。
  3. 除此之外,还有一个前端Web应用程序来显示产品详细信息。

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

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

    在那种情况下,Zuul的好处是什么?为什么不使用feign为两种服务创建客户端并为前端应用程序提供端点?

2 个答案:

答案 0 :(得分:1)

Zuul作为Proxy服务器不仅可以路由请求,还可以使用Zuul过滤器来处理横切关注问题,例如:

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

您提及Feign个客户端,这对于基于Java的前端应用程序(据我所知)是有用的,如果前端应用程序是使用{{1}开发的,那该怎么办? }或Angular

答案 1 :(得分:1)

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

Feign Client是一个美化的REST模板,增加了诸如Retry,Fallbacks等。您可以按照Apache HttpClient的思路进行思考

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