赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. Serverless应用引擎(新版)
  4. 实践教程
  5. 应用开发和部署
  6. 线上场景:基于自建Spring Cloud Gateway或Zuul网关实现全链路灰度

线上场景:基于自建Spring Cloud Gateway或Zuul网关实现全链路灰度

  • 应用开发和部署
  • 发布于 2025-04-17
  • 0 次阅读
文档编辑
文档编辑

本文通过示例演示如何在SAE上实现全链路灰度发布, 可以在不需要修改您的任何业务代码的情况下,实现全链路流量控制。

准备工作

本文通过示例为您演示ALB网关全链路灰度功能。假设应用的架构由ALB网关以及后端的微服务架构(Spring Cloud)组成,后端调用链路有3个微服务:购物车(A)、交易中心(B)、库存中心(C),可以通过客户端或HTML来访问后端服务,这些服务之间通过Nacos注册中心实现服务发现。

部署SAE Demo应用

  1. 下载Demo。

  2. 部署主干链路应用。

    部署主干链路应用(A、B、C)。具体操作,请参见将应用的服务注册与发现中心更改为Nacos。

  3. 部署灰度链路应用(A-gray、B-gray、C-gray),在启动命令中添加启动参数-Dalicloud.service.tag=gray用于区别主干链路应用。

说明

部署时,如果需要使用独立的注册中心,需要添加启动参数-Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false。

部署Spring Cloud Gateway或Zuul网关

应用可以使用相同域名,通过不同路径流量转发实现请求路由分发。具体操作,请参见为应用绑定CLB并生成应用的公网或私网访问IP。

为流量配置特定Header实现全链路灰度

有些客户端无法改写域名,希望能在访问www.base.com时,通过传入不同的Header来路由到灰度环境。例如下图中,通过添加x-mse-tag:gray这个Header,来访问灰度(gray)环境。

警告

x-mse-tag这个Header仅适用于本文描述的场景。请勿在其他场景中,尤其是在应用的灰度规则中使用该Header。

dg_implement_end_to_end_canary_release_by_using_self-managed_spring _cloud_or_zuul_gateways

结果验证。

  • 访问www.base.com路由到基线(base)环境。

    • 执行以下curl命令:

      curl -H"Host:www.base.com" http://106.14.XX.XX/a
    • 执行结果:

      A[172.18.XX.XX] -> B[172.18.XX.XX] -> C[172.18.XX.XX]
  • 如果想访问灰度环境,只需要在请求中增加一个Header:x-mse-tag:gray。

    • 执行以下curl命令:

      curl -H"Host:www.base.com"  -H"x-mse-tag:gray" http://106.14.XX.XX/a
    • 执行结果:

      Agray[172.18.XX.XX] -> Bgray[172.18.XX.XX] -> Cgray[172.18.XX.XX]%

      可以看到CLB Ingress根据这个Header直接路由到了A的灰度(gray)环境中。

相关文章

通过命名空间实现开发环境、测试环境和生产环境的隔离 2025-04-17 10:59

如果您在部署应用时需要区分开发环境、测试环境和生产环境,您可以为每套环境创建一个命名空间。同一命名空间的应用之间可以通过内网实现方法调用,不同命名空间的应用可以实现相互隔离。 方案概览 本文将指引您创建dev、test、prod三个命名空间,分别用

开发场景:通过端云互联实现开发和测试环境隔离 2025-04-17 10:59

本文通过模拟真实的调用链路,为您演示如何自动实现Serverless 应用引擎 SAE(Serverless App Engine)本地开发环境与测试环境的流量隔离,方便您快速开发联调,提高开发效率。

开发场景:基于消息队列RocketMQ版实现环境隔离 2025-04-17 10:59

本文介绍如何在Serverless 应用引擎 SAE(Serverless App Engine)上基于阿里云云消息队列 RocketMQ 版实现环境隔离,您可以在不修改任何业务代码的情况下,实现异步场景下的流量控制。

线上场景:基于自建Spring Cloud Gateway或Zuul网关实现全链路灰度 2025-04-17 10:59

本文通过示例演示如何在SAE上实现全链路灰度发布, 可以在不需要修改您的任何业务代码的情况下,实现全链路流量控制。 准

云安全中心的Serverless资产如何绑定微服务应用(邀测) 2025-04-17 10:59

云安全中心的Serverless资产绑定微服务应用后,云安全中心可对微服务应用进行漏洞扫描、入侵检测和基线检查,极大提升应用安全的同时也优化了成本效益,为SAE应用构筑坚实的安全防线。本文

使用SAE部署Nginx服务 2025-04-17 10:59

Nginx可以用于搭建静态网站,也可以实现反向代理(将客户端的请求转发到其他后端应用)。本文将指引您使用SAE部署Nginx服务。 方案概览 如下图所示,Nginx能够根据客户端请求的路径,返回应用自身包含的静态资源(如HTML页面),或者将请求转发到其他后端应用,并将处理结果返回给客户端。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号