领事与 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.com
和myservice2.com
。
网关可以配置为在这些服务之间对请求进行负载平衡。您可以使用网关的功能来测试上游的健康状况,但也有专门的工具。 Consul 就是这样一种工具。
API 网关应该能够与服务发现工具集成。所以让我们假设myservice1.com
因维护而停机,网关将知道永远不会在那里发送流量,并且只会发送到service2.com
,直到 service1 恢复。
下面的屏幕截图是对 Consul 的 tyk.io api 网关集成支持的示例。
【讨论】:
以上是关于领事与 API 网关的主要内容,如果未能解决你的问题,请参考以下文章