【发布时间】:2018-05-26 22:40:10
【问题描述】:
我想问一下 Consul 和 API Gateway 的功能。 Consul 可以代替 API Gateway 作为服务的引用者吗?
或者在微服务架构方面如何使用它们?
谢谢
【问题讨论】:
标签: api consul api-gateway
我想问一下 Consul 和 API Gateway 的功能。 Consul 可以代替 API Gateway 作为服务的引用者吗?
或者在微服务架构方面如何使用它们?
谢谢
【问题讨论】:
标签: api consul api-gateway
Consul 是多数据中心服务发现(+健康检查)和分布式 K/V 存储。
API Gateway 是一项服务,负责处理接受和处理 API 调用所涉及的所有任务,包括流量管理、授权和访问控制、监控以及 API 版本管理。
所以他们完全不同..
取决于您要实现的目标以及您当前的 API 网关用例,您可能能够使用 Consul + Consul 感知负载平衡器,例如 https://github.com/fabiolb/fabio 和 https://traefik.io/。
【讨论】:
在高层次上,API 网关将成为您的微服务的单一入口点。它将允许您为您的客户提供一致的用户体验 - 无论后端服务如何。
它们充当抽象 - 当您点击 /product/{productId} 端点时,您不需要了解内部微服务,例如/reviews、/recommendations 等 - 网关可以为您执行此操作并返回单个响应。
API 网关将被配置为在侦听路径上接收请求,例如
curl http://gateway.com/myservice/mypath -H 'Authorization: secret_auth_token'
在内部,网关将收到请求,并会看到myservice 指向特定的 api 定义。
并且基于该身份验证令牌,将能够确定是否允许用户访问、什么速率限制/配额以及允许他们访问的上游目标和路径。几个典型特征:
因此网关会将请求代理到例如myservice.com/mypath,并将响应返回给客户端。
现在让我们假设您希望上游具有高可用性 - 例如你可能有myservice1.com 和myservice2.com。
网关可以配置为在这些服务之间对请求进行负载平衡。您可以使用网关的功能来测试上游的健康状况,但也有专门的工具。 Consul 就是这样一种工具。
API 网关应该能够与服务发现工具集成。所以让我们假设myservice1.com 因维护而停机,网关将知道永远不会在那里发送流量,并且只会发送到service2.com,直到 service1 恢复。
下面的屏幕截图是对 Consul 的 tyk.io api 网关集成支持的示例。
【讨论】: