一、相关设计
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的连接池
作者:
服务支撑组:邓伟、蒋明飞、陈派宇、章石青