一、相关设计

1、nginx中的接口

  • 获取当前发版的版本
  • 设置host键,前端ip+上面获取的版本号

2、redis中相关的键

status:
  • 0

    • 默认,不分蓝绿
  • 1

    • 获取来源ip
    • 如果与redis中的host键对应的上,就绿
      • 否则走蓝
    • gateway走蓝
  • 3

    • 走绿
    • gateway走绿
host

记录前端ip和最新的版本

count

精细化控制时的访问计数

threshold

精细化时控制时,灰度访问阈值

二、架构与原理:

1、架构图

蓝绿发版实现

2、原理

  • nginx中定义蓝绿对应的upstream,进行蓝绿发版
  • nginx接口功能:
    前端和中台进行联调:前端代码发布一台,中台发布绿,那前端更新机器的流量将会走中台的绿进行灰度

三、灰度流量精细化控制扩展:

  • 增加一个访问计数的功能,count

    • 当status值为1时,获取来源ip,如果与redis中的host键对应的上,同时当前count小于阈值,流量走绿,否则流量走蓝
  • nginx中的要进行接口扩展:

    • 除了要设置前端ip+版本号之外,还要设置threshold,也就是放开多少流量到蓝
  • 优化:

    • redis的pipeline
    • redis的连接池

作者:
服务支撑组:邓伟、蒋明飞、陈派宇、章石青

相关文章:

  • 2021-07-23
  • 2022-02-09
  • 2021-09-15
  • 2022-12-23
  • 2021-05-06
  • 2021-10-28
  • 2021-08-28
猜你喜欢
  • 2021-11-27
  • 2021-11-26
  • 2021-07-15
  • 2021-10-31
  • 2021-09-22
  • 2022-12-23
  • 2021-04-18
相关资源
相似解决方案