采用基于 API 的架构的一个好处是,你可以快速迭代并部署对服务的新更改。 在现代化架构中,API 网关还建立了流量和路由的概念。 API 网关提供了多个阶段,允许你在同一网关后部署多个 API,并且能够进行就地更新而不会停机。 使用 API 网关使你可以利用该服务的众多 API 管理功能,例如 身份验证、速率 限制、可观察性、多个 API 版本控制以及阶段部署管理(在多个阶段(例如 dev、test、stage 和 prod)中部署 API)。
开源 API 网关(Apache APISIX 和 Traefik)和服务网格(Istio 和 Linkerd)解决方案能够进行流量拆分并实现金丝雀发布和 蓝绿部署等功能。 通过金丝雀测试,你可以仅选择一小部分用户群来对 API 的新版本进行关键检查。
什么是金丝雀发布?
金丝雀发布引入了 API 的新版本,并将一小部分流量导向金丝雀。 在 API 网关中,流量拆分可以逐步地将流量从目标服务的一个版本转移或迁移到另一个版本。 例如,可以与原始版本 v1.0
一起部署服务的新版本 v1.1
。 流量转移使你可以通过首先仅将一小部分用户流量(例如 1%
)路由到 v1.1
,然后随着时间的推移将所有流量转移到新服务来对新服务进行金丝雀测试或发布。

(Bobur Umurzokov,CC BY-SA 4.0)
这使你可以监控新服务,查找技术问题(例如延迟增加或错误率),并查找所需的业务影响。 这包括检查关键绩效指标(如客户转化率或平均购物结账价值)是否增加。 流量拆分使你可以通过在服务的多个版本之间划分目标服务的流量来运行 A/B 或多变量测试。 例如,你可以将流量 50/50
拆分到目标服务的 v1.0
和 v1.1
版本,并查看哪个版本在特定时间内表现更好。 了解有关 Apache APISIX Ingress Controller 中的流量拆分功能的更多信息。
在适当的时候,金丝雀发布是一个绝佳的选择,因为暴露给金丝雀的流量百分比受到高度控制。 需要权衡的是,系统必须具备良好的监控功能,以便能够快速识别问题并在必要时回滚(可以自动化)。 本指南向你展示如何使用 Apache APISIX 和 Flagger 快速实施金丝雀发布解决方案。

(Bobur Umurzokov,CC BY-SA 4.0)
流量镜像
除了使用流量拆分来运行实验外,你还可以使用流量镜像来复制或复制流量。 你可以将此流量发送到其他位置或一系列位置。 通常,使用流量镜像时,重复请求的结果不会返回到调用服务或最终用户。 相反,对响应进行带外评估以确保正确性。 例如,它比较了重构服务和现有服务生成的结果。

(Bobur Umurzokov,CC BY-SA 4.0)
使用流量镜像使你可以“黑暗发布”服务,用户对新版本一无所知,但你可以在内部观察所需的效果。
多年来,在系统边缘实施流量镜像变得越来越流行。 APISIX 提供了 proxy-mirror 插件来镜像客户端请求。 它将真实的在线流量复制到镜像服务,并支持对在线流量或请求内容进行特定分析,而不会中断在线服务。
什么是蓝绿部署?
蓝绿部署通常在架构中使用路由器、网关或负载均衡器的点上实施。 在这之后是一个完整的蓝色环境和一个绿色环境。 当前的蓝色环境代表当前的活动环境,而绿色环境代表堆栈的下一个版本。 在切换到活动流量之前,会检查绿色环境。 当它上线时,流量会从蓝色切换到绿色。 蓝色环境现在已关闭,但如果发现问题,回滚会很快。 下一个更改是从绿色到蓝色,从第一次发布开始振荡。

(Bobur Umurzokov,CC BY-SA 4.0)
蓝绿部署由于其简单性而效果良好,并且它是耦合服务的更好部署选项之一。 管理持久服务也更容易,但你仍然需要在回滚时小心。 它还需要两倍的资源才能与当前活动环境并行冷启动。
使用 Argo Rollouts 进行流量管理
所讨论的策略增加了很多价值,但是推出本身是一项你不想手动管理的任务。 这就是诸如 Argo Rollouts 之类的工具对于展示所讨论的一些问题很有价值的地方。
使用 Argo,可以定义一个 Rollout CRD,它表示你可以用于推出 API 的新金丝雀的策略。 自定义资源定义 (CRD) 允许 Argo 扩展 Kubernetes API 以支持推出行为。 CRD 是 Kubernetes 中一种流行的模式。 它们允许用户与一个 API 交互,并使用扩展来支持不同的功能。
你可以将 Apache APISIX 和 Apache APISIX Ingress Controller 用于使用 Argo Rollouts 进行流量管理。 本指南向你展示了如何将 ApisixRoute
与 Argo Rollouts 集成,并将其用作加权循环负载均衡器。
总结
分离服务(以及相应的 API)的部署和发布能力是一项强大的技术,尤其是在渐进式交付方法日益普及的情况下。 金丝雀发布服务可以利用 API 网关流量拆分和镜像功能,并提供竞争优势。 这有助于你的企业减轻不良发布的风险,并了解客户的需求。
本文最初发表在 API7.ai 博客上,并已获得许可后重新发布。
评论已关闭。