Skip to content

灰度发布

概述

灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

实现

  • nginx: ./nginx -s reload 过程不会对业务产生影响,阅读:https://www.cnblogs.com/wsjhk/p/11430613.html
  • zuul/gateway: nginx 内, 后端接口 proxy 使用 upstream, 做到 gateway 的灵活切换.
  • application:
    1. 服务请求过程中,服务消费方(C1,C2)附带自身实例信息在 header 中传递给服务生产方
    2. 服务生产方(S1, S2)缓存调用来源信息.
    3. 服务生产方需要进行发布, 向服务方S1发起发布请求
    4. S1 依据,调用来源信息, 发布下线通知(C1,C2 将收到通知)
    5. C1, C2 接收通知,并把S1 服务标记到 loadBanacer, 不再主动调用 S1
    6. S1 继续处理残余请求
    7. 统计 S1 残余请求数,直到请求数为0
    8. 向S1 发布下线命令, 更新版本,重新上线
    9. S1 广播重新上线通知, C1, C2 恢复 loadBanacer 策略
    10. S1 完成发布, 以同样的方式发布 S2

Released under the MIT License.