领事与 API 网关

Posted

技术标签:

【中文标题】领事与 API 网关【英文标题】:Consul vs API Gateway 【发布时间】:2018-05-26 22:40:10 【问题描述】:

我想问一下 Consul 和 API Gateway 的功能。 Consul 可以代替 API Gateway 作为服务的引用者吗?

或者在微服务架构方面如何使用它们?

谢谢

【问题讨论】:

【参考方案1】:

Consul 是多数据中心服务发现(+健康检查)和分布式 K/V 存储。

API Gateway 是一项服务,负责处理接受和处理 API 调用所涉及的所有任务,包括流量管理、授权和访问控制、监控以及 API 版本管理。

所以他们完全不同..

取决于您要实现的目标以及您当前的 API 网关用例,您可能能够使用 Consul + Consul 感知负载平衡器,例如 https://github.com/fabiolb/fabio 和 https://traefik.io/。

【讨论】:

consul 也是一个服务网格【参考方案2】:

在高层次上,API 网关将成为您的微服务的单一入口点。它将允许您为您的客户提供一致的用户体验 - 无论后端服务如何。

它们充当抽象 - 当您点击 /product/productId 端点时,您不需要了解内部微服务,例如/reviews/recommendations 等 - 网关可以为您执行此操作并返回单个响应。

API 网关将被配置为在侦听路径上接收请求,例如

curl http://gateway.com/myservice/mypath -H 'Authorization: secret_auth_token'

在内部,网关将收到请求,并会看到myservice 指向特定的 api 定义。

并且基于该身份验证令牌,将能够确定是否允许用户访问、什么速率限制/配额以及允许他们访问的上游目标和路径。几个典型特征:

身份验证和授权 速率限制 正文变换(过滤器/映射缩减/Json -> XML、XML -> Json) 标头注入 Json 架构验证 方法转换 模拟回复 API 版本控制策略 向多个目标发送请求 不胜枚举。

因此网关会将请求代理到例如myservice.com/mypath,并将响应返回给客户端。

现在让我们假设您希望上游具有高可用性 - 例如你可能有myservice1.commyservice2.com

网关可以配置为在这些服务之间对请求进行负载平衡。您可以使用网关的功能来测试上游的健康状况,但也有专门的工具。 Consul 就是这样一种工具。

API 网关应该能够与服务发现工具集成。所以让我们假设myservice1.com 因维护而停机,网关将知道永远不会在那里发送流量,并且只会发送到service2.com,直到 service1 恢复。

下面的屏幕截图是对 Consul 的 tyk.io api 网关集成支持的示例。

【讨论】:

以上是关于领事与 API 网关的主要内容,如果未能解决你的问题,请参考以下文章

微服务与API 网关(上): 为什么需要API网关?

技术干货 | API网关与服务安全最佳实践

API网关服务-20190908

技术干货 | 漫谈API网关——API网关探索与实践

百亿规模API网关服务Shepherd的设计与实现

美团:百亿规模API网关服务Shepherd的设计与实现