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