企业API网关是一个成熟的中间件工具,市场上的相关成熟产品也很多。但是,在对轻量级、快速响应要求很高的微服务架构下,传统企业级API网关作为企业的公共基础设施,又显得有些笨重了。在本文中,我们将讨论对比两者的不同,根据不同的业务目标(效率和管理)来实现一种完全不同的API网关。

在过去十年中,企业一直致力于通过定义良好的API来公开内部的业务系统并进行信息交互。如何管理成百上千的API,安全地支持最终内部和外部的调用用户,这一巨大的挑战促使了API网关的出现和发展。在数据和服务交互时,传统企业级API网关既作为一个前端窗口,又作为各类系统的后端总入口,承载著所有服务的组合,路由,转换等工作。除此之外,我们一般也会把安全,限流,缓存,日志,监控,重试,熔断等放到 API 网关来做。随著时间的推移,API网关逐渐成为企业中间件重要的核心基础架构之一。

随著对云原生和微服务的概念的不断推广和使用,我们开始遇到一些新的问题区别于传统企业级API网关,业界提出了旨在提高独立的服务开发团队使用的高效工作流程的微服务API网关。微服务API网关为团队提供了独立发布,监控和更新微服务的所有功能,通过开发,测试,部署等的自动化工作流程来提高团队的工作效率。

微服务的组织

在实施微服务的组织中,小型开发团队彼此独立工作,以快速响应客户不断变化的需求。每个独立工作的服务开发团队通过API来交互服务,服务团队需要通过高效的工作流程进行:

· 发布服务,以便提供者公开发布,其他人可以了解和使用该服务

· 测试并更新服务,帮助调用者调试和使用服务。也帮助服务提供者继续改进服务

· 监控和保障服务,实时监控服务的运行情况,并及时采取相应措施保障服务运营

好平台帮助服务团队独立完成这些工作,而不是需要其他操作或平台团队的介入和帮助,因为只要服务团队需要另一个团队,他们就不是所谓的独立工作,进而导致瓶颈的出现。

对于服务发布,微服务API网关为调用者提供统一的静态地址,并动态地将请求路由到适当的实际服务地址,这里的服务地址一般指向服务团队开发和维护的一个或多个服务组合。此外,平台为服务安全性提供调用身份验证(密钥)和TLS终止是向其他使用者公开服务的通用功能。

了解服务的最终用户体验对于改进服务至关重要。例如,软体更新可能会无意中影响某些请求的延迟。微服务API网关的日志可以很好地收集最终用户流量的关键可观察性的指标,因为它可以将流量路由到终端服务。并提供完善的分析,提高运营质量。

微服务API网关还支持「金丝雀发布」测试:系统上原有版本已经可用,网关将用户请求动态路由到新的服务版本以进行测试。通过将一小部分最终用户请求路由到新版本的服务,服务团队可以安全地测试本次更新对一小部分最终用户产生的影响,以期望在生产环境上尽早发现问题。

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

乍一看,上述用例可以通过以企业为中心的API网关来实现。虽然可以实现,但企业API网关和微服务API网关的关注点不同:

自服务发布

开发团队需要能够自主发布新服务,而无需通过运营或API管理团队。这种部署和发布自助服务的能力使团队能够保持较高的发布速度和频率。虽然传统的企业API网关可以提供用于发布新服务的简单机制(例如,REST API),但实际上只限于负责网关运维的团队使用。限制单个开发团队自主发布API,主要原因是为了安全考虑:错误的API调用可能会对生产环境造成灾难性影响。

微服务API网关允许服务团队轻松和安全地发布新的服务,是因为在微服务场景下,我们默认服务团队对微服务有清楚的了解并承担全部的责任。一旦有问题出现可以快速解决。而且微服务网关可以提供可配置的监控以方便发现问题,并提供在线调试环境,流量监控或流量转移/复制。优秀的微服务API网关更提供一体化的开发,调试,发布流程环境和一系列自动化工具,方便开发者高效开发运维。

监控和速率限制

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

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

测试和更新

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

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

总结

传统的企业API网关旨在解决API管理的挑战。虽然它们似乎可以解决微服务架构下的一些挑战,但实际情况是微服务工作流提出了一组不同的需求。将微服务API网关集成到微服务的开发工作流程中,使服务团队能够快速,安全地自行发布,监控和更新其服务。这将使我们能够以更快的速度发布软体,并且具有前所未有的可靠性。优秀的微服务API网关更像传统API网关和企业级应用伺服器的有机结合。灵长科技 WWW.APEMESH.COM 的企业级API管理系统正是这样一个集成系统,提供了丰富的API管理功能,一体化的在线开发环境,一系列自动化开发工具,完善的自动化应用运维监控和管理。该系统将为您的微服务部署提供强大框架保障。


推荐阅读:
相关文章