浏览 API 网关
解决方案可能包含多个前端和后端服务。 在此方案中,客户端如何知道要调用哪些终结点? 引入新服务或重构现有服务时会发生什么情况? 服务如何处理 SSL 终止、身份验证和其他问题?
API 管理网关(也称为数据平面或运行时)是负责代理 API 请求、应用策略和收集遥测的服务组件。
API 网关位于客户端和服务之间。 它充当反向代理,将来自客户端的请求路由到服务。 它还可能执行各种交叉任务,例如身份验证、SSL 终止和速率限制。 如果未部署网关,客户端必须将请求直接发送到后端服务。 但是,直接向客户端公开服务存在一些潜在问题:
- 这可能会导致复杂的客户端代码。 客户端必须跟踪多个终结点,并采用复原方式处理故障。
- 它会在客户端和后端之间创建耦合。 客户端需要知道各个服务是如何分解的。 这使得维护客户端更加困难,也更难重构服务。
- 单个操作可能需要调用多个服务。
- 每个面向公众的服务必须处理身份验证、SSL 和客户端速率限制等问题。
- 服务必须公开客户端友好的协议,例如 HTTP 或 WebSocket。 这限制了通信协议的选择。
- 具有公共终结点的服务是潜在的攻击面,必须强化。
网关通过将客户端与服务分离来帮助解决这些问题。
托管和自承载
API 管理提供托管网关和自承载网关:
托管 - 托管网关是在 Azure 中为每个服务层中的每个 API 管理实例部署的默认网关组件。 使用托管网关时,无论实现 API 的后端在何处,所有 API 流量都会流经 Azure。
自承载 - 自承载网关是默认托管网关的可选容器化版本。 它适用于混合和多云方案,其中要求在托管 API 后端的同一环境中从 Azure 运行网关。 自承载网关使具有混合 IT 基础结构的客户能够从 Azure 中的单个 API 管理服务管理本地和跨云托管的 API。