微服务API网关 vs. 传统企业级API网关

翻译 | 李守超后端

原文 | https://www.getambassador.io/...api

导读缓存

企业API网关是一个很成熟的工具,市场上的相关成熟产品也不少。可是,在对轻量级、快速响应要求很高的微服务架构下,传统企业级API网关做为企业的公共基础设施,又显得有些重了。在本文中,咱们将讨论业务目标(生产率与管理)的不一样是如何要求咱们实现一种彻底不一样的API网关。安全

在过去十年中,企业组织一直致力于经过定义良好的API公开内部的业务系统。如何将数百或数千个API安全地暴露给最终用户(内部和外部),巨大的挑战促使了API网关的出现。在对外发布服务时,传统企业级API网关做为一个系统的后端总入口,承载着全部服务的组合路由转换等工做。除此以外,咱们通常也会把安全,限流,缓存,日志,监控,重试,熔断等放到 API 网关来作。随着时间的推移,API网关逐渐成为核心且重要的基础架构之一。架构

随着对云原生和微服务的概念的不断推广和使用,咱们开始遇到一些新的问题。区别于传统企业级API网关,业界提出了旨在加速独立服务团队的开发工做流程的微服务API网关。微服务API网关为团队提供了独立发布,监控和更新微服务的全部功能,关注于加速开发测试部署的工做流程。运维

微服务组织微服务

在微服务组织中,小型开发团队彼此独立工做,以快速向客户提供功能。为了使每一个服务团队独立工做,经过高效的工做流程,服务团队须要可以:工具

  • 发布服务,以便其余人可使用该服务
  • 监控服务,观察它的运行状况
  • 测试并更新服务,以即可以继续改进服务

团队须要作到全部这些而不须要其余操做或平台团队的帮助,由于只要服务团队须要另外一个团队,他们就不是所谓的独立工做,进而致使瓶颈的出现。测试

对于服务发布,微服务API网关为消费者提供静态地址,并动态地将请求路由到适当的服务地址,这里的服务地址通常指由服务团队开发和维护的一个或多个服务的多个实例。此外,为安全性提供身份验证和TLS终止是向其余使用者公开服务的典型考虑因素。spa

了解服务的最终用户体验对于改进服务相当重要。例如,软件更新可能会无心中影响某些请求的延迟。微服务API网关能够很好地收集最终用户流量的关键可观察性的指标,由于它能够将流量路由到终端服务。

微服务API网关还支持将用户请求动态路由到不一样的服务版本以进行金丝雀测试。经过将一小部分最终用户请求路由到新版本的服务,服务团队能够安全地测试本次更新对一小部分用户产生的影响。

微服务API网关与企业API网关

乍一看,上述用例能够经过以企业为中心的API网关来实现。虽然能够实现,但企业API网关和微服务API网关的实际重点有些不一样:

图片描述

自服务发布

团队须要可以向客户发布新服务,而无需运营或API管理团队。这种部署和发布自助服务的能力使团队可以保持较高的发布速度和频率。虽然传统的企业API网关能够提供用于发布新服务的简单机制(例如,REST API),但实际上只限于负责网关运维的团队使用。限制单个团队发布API,主要缘由是为了安全考虑:错误的API调用可能会对生产环境形成灾难性影响。
微服务API网关容许服务团队轻松和安全地发布新的服务,是由于在微服务场景下,咱们默认服务团队对微服务有清楚的了解并承担所有的责任。一旦有问题出现能够快速解决。并且微服务网关能够提供可配置的监控以方便发现问题,并提供调试钩子,例如检查流量或流量转移/复制。

监控和速率限制

API的常见商业模式是计量,其中根据API使用状况向消费者收取不一样的费用。传统的企业API网关在这一点上通常作的比较好:它们提供了监控每一个客户端API使用的功能,而且具有当客户端超出配额时限制其使用的能力。

微服务网关也须要监控和速率限制,但缘由有所不一样。监控用户可见的指标(如吞吐量,延迟和可用性)很是重要,它能够确保微服务的更新不会影响到最终用户。稳定可靠的监控指标对于实现快速增量更新相当重要。速率限制则用于提升服务的总体弹性。当服务未按预期响应时,API网关能够限制传入请求以容许服务恢复并防止级联故障,也即微服务设计中常用的熔断、降级等模式。

测试和更新

微服务应用程序具备多个服务,每一个服务都是独立更新的。上生产环境以前的自动化测试是必要的,但对于微服务来讲仍是不够。金丝雀部署将一小部分生产流量路由到新服务版本,是帮助测试更新的重要工具。经过将新服务版本限制为一小部分用户,即使出现问题,服务故障的影响是有限的。当测试稳定之后逐步替换旧版本,最终实现全部服务实例的版本更新。

在传统的企业API网关中,路由用于隔离或组合/聚合变化的API版本。上生产环境前的自动化测试,上生产环境后的手动验证和检查,两者都是必须的。

总结

传统的企业API网关旨在解决API管理的挑战。虽然它们彷佛能够解决微服务架构下的一些挑战,但实际状况是微服务工做流提出了一组不一样的需求。将微服务API网关集成到微服务的开发工做流程中,使服务团队可以快速,安全地自行发布,监控和更新其服务。这将使咱们可以以更快的速度发布软件,而且具备史无前例的可靠性。

本文由博云研究院翻译发表,转载请注明出处。
相关文章
相关标签/搜索