【问题标题】:Api gateway or No Api GatewayApi 网关或无 Api 网关
【发布时间】:2016-03-30 06:33:07
【问题描述】:

我正在开发一个基于microservice architecture 的应用程序。在这里,每个service 都是一个可独立部署的play-scala application,暴露rest apis。我想在这些服务之上实现一个Api gateway 来映射传入请求。我遵循此处讨论的架构:Building Microservices

基于微服务架构的成熟度很高的项目很少。其中之一是Reactive Microservices。但是这个项目没有使用api gateway pattern 并且似乎在关注Anti Pattern 有一个issue 为这个项目打开了关于这里缺少的Api 网关。这里的贡献者声称他们没有关注api gateway pattern,因为它有single-point of failure 的风险。

这种不同的意见让我很困惑。所以,我正在寻找关于我是否应该使用 Api Gateway 的建议。 这里的正确做法是什么?

【问题讨论】:

  • 嗨@oblivion,你能分享一下你采取的方法吗?

标签: microservices


【解决方案1】:

API 网关不会像负载平衡器那样引入单点故障。任何重要的 API 网关都应该能够在高可用性模式下运行,从而消除单点故障。

API 网关鼓励团队内部进行良好的文档编制和规划。一些 API 网关允许您导入 Swagger 规范 https://swagger.io/ 以创建 API。

一些网关允许您创建虚拟端点来模拟上游目标的响应。这样,如果您的服务还不可用,您仍然可以对其进行编码,并在准备好时切换到目标。

API 网关应该能够循环负载平衡您的上游目标,无需添加专用负载平衡器。您还可以将网关配置为定期命中健康检查端点,并在服务不可用时自动从 LB 中删除目标。

网关将为您处理身份验证。无论是通过 JWT、Oauth、Simple、Open 等。您的开发人员可以专注于构建他们的微服务。您的微服务可以是微型的。网关将位于基础架构的边缘,为您处理安全问题。

【讨论】:

  • 如果API网关处理auth,是否意味着后面的服务可能是完全开放的?
  • 网关用于保护您的内部网络,应该受到信任。它是一个反向代理。因此,根据您的用例,您可以保持打开状态,或使用双向 TLS,或 jwt 或注入 auth 标头或将网关 IP 列入白名单,或部署为服务网格。看看tyk.io 以获得可靠的 api 网关和管理平台。
  • 这个用例怎么样。内部服务提供有关实体的数据。 API 网关仅过滤用户有权查看的实体。那是合法的吗?这里没有太多关于技术安全的内容,而是更多关于内容的内容。
  • 看看 OAuth 和 OIDC。网关可以通过自省端点验证访问令牌并确定可以访问哪些资源 - 但 AuthN/Z 超出了此 S/O 问题的范围。
猜你喜欢
  • 2019-05-31
  • 1970-01-01
  • 2020-07-04
  • 1970-01-01
  • 2016-03-31
  • 2018-09-05
  • 1970-01-01
  • 2020-10-20
  • 2020-11-07
相关资源
最近更新 更多