美文网首页java架构设计专题
谈谈灰度发布的设计与实现

谈谈灰度发布的设计与实现

作者: 先生zeng | 来源:发表于2019-10-16 21:14 被阅读0次

定义

灰度发布时互联网产品发布常用的一种方式,顾名思义,就是在黑与白之前平滑过渡的一种产品发布方式。铲平发布者根据某种规则,让一部分用户继续使用原来的产品功能,另一部分用户开始组建启用新的功能,在过度的过程中可能还会对产品做进一步的完善,灰度发布完成后,所有用户都将使用新的产品功能。

  • 金丝雀发布
  • A/B Test

灰度发布目的

互联网产品需要快速迭代上线,又要保证质量,保证刚上线的吸引,一旦出现问题可以很快控制局面,就需要设计一套灰度发布系统。

作用

可以根据配置,将用户流量导到新的上线的系统上,来快速验证新的功能,而一旦出现问题,也可以马上的恢复,简单的说就是一套A/B test 系统

架构方案

  • 上游服务介入客户端请求,根据下发的灰度配置将符合条件的请求转发到下游新旧版服务上。
  • 下游新旧版服务是处理客户端请求的业务服务系统。
  • 服务配置管理平台,此平台可以配置不同的灰度发布转发策略给上游服务。
  • 注册中心,负责上下游服务的注册和发现。
image

难点 怎么去设计

协议设计

image image

案例

  • 上游服务
    • Nginx
      • 拓展Nginx实现灰度发布策略转发
      • 本地部署Agent
        • 接收服务配置管理平台下发的灰度策略,更新Nginx配置,优雅重启Nginx服务。
    • RPC 服务
      • 集成配置管理平台客户端SDK,接收服务配置管理平台下发的灰度策略。
      • 灰度策略执行计划。
        • 新版本的开启。
  • 下游服务
    • 新版本服务注册到服务注册中心
      • 通过版本号控制是否开启

复杂场景

场景一

image

网关层改动,数据访问层也要改动。


image

场景二

image image

灰度发布的链路

ABTest场景实施的层次

  • 网关层(如果各个场景都使用,就选择网关层)
  • 业务逻辑层

核心问题

本质是什么? 如果只是一个具体的业务逻辑实现,那么在业务层做。如果是通用的,那么在网关层。

开源框架:

springCloud灰度发布神器

    Nepxion Discovery
        服务注册和负载均衡的增强中间件
        包含了灰度发布

APP端如何发布

image

相关文章

网友评论

    本文标题:谈谈灰度发布的设计与实现

    本文链接:https://www.haomeiwen.com/subject/wtmymctx.html