Api 网关或无 Api 网关

Api gateway or No Api Gateway

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

很少有基于微服务架构的成熟项目。其中之一是 Reactive Microservices. But this project is not using the api gateway pattern and seems to be following the Anti Pattern There is an issue 为这个项目打开关于这里缺少的 Api 网关。这里的贡献者声称他们没有遵循 api gateway pattern 因为它有 single-point of failure 的风险。

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

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

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

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

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

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