ASM助力进口电商龙头实现高级灰度发布

更新时间:2025-03-18 02:54:31

微服务架构往往面临服务之间的复杂依赖关系和运行环境的多样性。有效监控和管理这些服务的健康状态是确保业务连续性和性能的关键。通过部署服务级别监控和管理机制,可以及时识别并解决服务故障,从而减少对用户体验的影响。

背景信息

客户Z是一家进口电商的领先企业,随着业务增长,服务架构日益复杂,这对系统的稳定性提出了更高的挑战。由于微服务数量众多且由多个不同团队维护,客户Z一直采取各团队独立负责发布和回滚。在需要同时发布多个应用时,团队需要手动协调发布顺序。此外,由于缺乏有效的灰度发布机制,一旦某个应用出现问题,可能会影响所有用户。

问题与挑战

  • 缺乏灰度发布机制。

    • 产品架构中的微服务涉及的团队众多,各自独立管理发布工作流,但现有调研发现,其他技术体系的灰度机制并不支持应用的独立灰度发布。

    • 希望能够按用户维度实施灰度发布,即每个用户要么完全进入灰度版本,要么完全进入非灰度版本。

  • 生产环境中的测试需求。

    • 希望能够在生产环境中进行测试,即在特定应用的流量调用时,能够路由到该应用的测试版本。这需要基于用户信息将流量引导至特定应用的测试工作负载。

  • 故障排查困难。

    • 当前的调用链异常复杂,各个应用的日志和监控缺乏统一性,导致在发现异常时难以快速定位问题,故障排查周期过长。

  • 流量防护不足。

    • 作为电商企业,在促销活动等高峰时段,过高的全局QPS对核心业务造成重大冲击,一旦发生过载,容易引发级联故障,导致系统大规模不可用。目前只能在大促前尽可能进行冗余部署,然而这种方式的资源利用率较低。团队内没有统一的限流和熔断实践,主要依赖各应用研发团队自行实现。

    • 部分用户占用系统资源过多,造成资源分配不公平,目前尚未有有效的解决方案。

  • LLM流量治理。

    • 对于接入阿里百炼、OpenAILLM服务的部分应用,API Key管理存在困难,暴露给应用团队容易导致滥用并增加替换难度。

    • 应用已接入DeepSeek,但在高并发时容易发生繁忙故障,希望在DeepSeek失败时能够自动切换降级到OpenAI服务。

解决方案

启用服务级灰度发布

通过启用服务级灰度发布,客户Z可以:

  • 进行应用粒度的灰度发布和用户维度灰度,将软件故障平均影响范围缩小90%。

    • 生产环境从内部账号开始,再到用户账号进行渐进式灰度发布,可以有效控制出现问题时的影响范围,且可以立即回退到稳定版本,控制影响时长。

  • 在生产环境部署与用户流量隔离的“生产测试环境”,实现Test in Production,显著减少了因生产环境与测试环境差异(相关权限问题、配置问题等)导致的上线故障。

用户级灰度发布ASM的一个典型场景。在这种场景中,单个应用可以独立于其他应用进行灰度发布。例如,应用A可以以1:9的比例分配流量到不同版本,而与此同时,应用B则可以以3:7的比例分配流量到不同版本,可以同时存在任意个数的独立灰度发布应用,各个应用的发布动作和进程互不干扰。

在网关配置请求打标规则时,可以在入口处根据配置的规则为请求打上多个标识。在后续的完整调用链中,ASM网格代理将帮助应用持续透传这些标识,确保每个请求都携带入口网关添加的所有标签。同时,可以通过配置路由规则来使用这些标签:当请求匹配到特定标签时,将执行相应的路由操作。

如下图,对应启用服务级灰度发布后,客户Z的产品架构。

image
  1. 每个业务团队都可以在网关上应用打标规则,只需要确保标签名称不冲突即可。

  2. 通过ASM提供的HashTagging网关插件,可以实现基于请求头的值进行哈希,根据哈希值命中的范围打标的能力,通过该能力可以轻松实现按用户ID灰度发布。

  3. 通过虚拟服务实现基于请求特征的打标,虚拟服务支持利用请求中携带的请求头信息(如上图中的UID)来进行打标。

启用服务网格可观测

通过启用服务网格可观测,客户Z可以:

  • 无需应用改造,即可获得Metrics + Tracing + Logging的完整可观测信息,可观测信息覆盖率提升至100%。

  • 通过监控指标感知问题,通过链路追踪确认RootCause位置,再通过访问日志获取Debug辅助信息的完整感知、定位和排查流程。故障处理速度提升80%。

image

ASM可观测配置可以为应用导出统一的日志、监控指标和链路追踪数据。统一的数据格式使得可观测信息可以方便地聚合,并进行统一的查询和分析。

启用流量防护能力

通过启用流量防护能力,客户Z可以:

  • 显著提高系统利用率,彻底杜绝了个别高频请求消耗系统资源的问题

  • 通过熔断限流自动降级,避免因为小故障级联引发大规模故障。

使用流量调度套件进行公平性限流

ASM流量调度套件提供了进阶限流能力,可以基于请求中携带的多种特征作为key进行限流。通过配置RateLimitingPolicy,可以指定以请求头为key,从而实现基于用户维度的限流,拒绝单一客户的过多请求。

使用本地限流和熔断防止级联故障

使用ASM可以在不对应用进行任何侵入式改动的情况下,快速为集群内的应用按需启用熔断与限流能力,从而提升集群的降级能力,避免级联故障扩大影响范围。

以下是客户Z启用流量防护能力后的效果示意图:

image

使用ASM管理LLM服务

通过使用ASM管理LLM服务,客户Z可以:

  • 应用无需关心LLM依赖的访问权限,全部统一管理,显著提升了安全性。

  • 为应用屏蔽LLM失败的重试问题,显著提升请求成功率。

凭证管理

ASM提供的LLM流量管理功能可以在应用请求LLM服务时根据应用身份为请求注入相应的API Key,实现了应用无需关心访问凭证,所有凭证集中管理的能力。

image

降级回退

通过ASM调用LLM API时,允许为特定Provider配置降级,当请求发生错误时ASM将自动降级,整个过程对应用无感知。

image
  • 本页导读 (1)
  • 背景信息
  • 问题与挑战
  • 解决方案
  • 启用服务级灰度发布
  • 启用服务网格可观测
  • 启用流量防护能力
  • 使用ASM管理LLM服务