架构模型:
K8S+Dubbo微服务+分库
目标:
通过k8s Ingress实现数据分库的灰度发布(网关灰度+服务灰度+数据灰度)
理论基础:
k8s Ingress 负载均衡,根据 header、cookie、query param 转发到不同的服务名称上
灰度发布示意图
实施步骤:
一、灰度发布配置表
二、服务器端灰度前准备
1、选择对应的分库执行上线sql脚本
2、启动新版本的服务集群
3、更新k8s Ingress配置信息
检测cookie gray=true 进入新版本灰度
4、开启客户端灰度请求(必须前面的步骤均就绪)
三、客户端进入灰度流程
客户端心跳接口
1、查询灰度开关是否已开启
2、如果已开启,计算自己是否属于灰度客户(根据token计算当前客户数据是否位于对应的灰度分库上)
3、如果位于对应灰度分库上,更新cookie gray=true
四、回滚流程
1、关闭 客户端灰度开关
2、心跳接口 更新 cookie gray=false
3、灰度分库上执行回滚脚本
4、灰度服务关闭
五、滚动发布剩余分库