API网关和微服务
企业API网关是一个成熟的中间件工具,市场上的相关成熟产品也很多。但是,在对轻量级、快速响应要求很高的微服务架构下,传统企业级API网关作为企业的公共基础设施,又显得有些笨重了。在本文中,我们将讨论对比两者的不同,根据不同的业务目标(效率和管理)来实现一种完全不同的API网关。
在过去十年中,企业一直致力于通过定义良好的API来公开内部的业务系统并进行信息交互。如何管理成百上千的API,安全地支持最终内部和外部的调用用户,这一巨大的挑战促使了API网关的出现和发展。在数据和服务交互时,传统企业级API网关既作为一个前端窗口,又作为各类系统的后端总入口,承载著所有服务的组合,路由,转换等工作。除此之外,我们一般也会把安全,限流,缓存,日志,监控,重试,熔断等放到 API 网关来做。随著时间的推移,API网关逐渐成为企业中间件重要的核心基础架构之一。
随著对云原生和微服务的概念的不断推广和使用,我们开始遇到一些新的问题。区别于传统企业级API网关,业界提出了旨在提高独立的服务开发团队使用的高效工作流程的微服务API网关。微服务API网关为团队提供了独立发布,监控和更新微服务的所有功能,通过开发,测试,部署等的自动化工作流程来提高团队的工作效率。
微服务的组织
在实施微服务的组织中,小型开发团队彼此独立工作,以快速响应客户不断变化的需求。每个独立工作的服务开发团队通过API来交互服务,服务团队需要通过高效的工作流程进行:
· 发布服务,以便提供者公开发布,其他人可以了解和使用该服务
· 测试并更新服务,帮助调用者调试和使用服务。也帮助服务提供者继续改进服务
· 监控和保障服务,实时监控服务的运行情况,并及时采取相应措施保障服务运营
好平台帮助服务团队独立完成这些工作,而不是需要其他操作或平台团队的介入和帮助,因为只要服务团队需要另一个团队,他们就不是所谓的独立工作,进而导致瓶颈的出现。
对于服务发布,微服务API网关为调用者提供统一的静态地址,并动态地将请求路由到适当的实际服务地址,这里的服务地址一般指向服务团队开发和维护的一个或多个服务组合。此外,平台为服务安全性提供调用身份验证(密钥)和TLS终止是向其他使用者公开服务的通用功能。
了解服务的最终用户体验对于改进服务至关重要。例如,软体更新可能会无意中影响某些请求的延迟。微服务API网关的日志可以很好地收集最终用户流量的关键可观察性的指标,因为它可以将流量路由到终端服务。并提供完善的分析,提高运营质量。
微服务API网关还支持「金丝雀发布」测试:系统上原有版本已经可用,网关将用户请求动态路由到新的服务版本以进行测试。通过将一小部分最终用户请求路由到新版本的服务,服务团队可以安全地测试本次更新对一小部分最终用户产生的影响,以期望在生产环境上尽早发现问题。
微服务API网关与企业API网关
乍一看,上述用例可以通过以企业为中心的API网关来实现。虽然可以实现,但企业API网关和微服务API网关的关注点不同: