灰度发布
只让一部分用户继续使用老版本,一部分用户开始用新版本,如果用户对新版本没有什么意见,那么逐步扩大范围,把所有用户都迁移到新版本上面来
优点:
保证整体系统稳定性
用户无感知,平滑过渡
缺点:
自动化要求高
A/B测试
灰度发布的另一种方式,主要对特定用户采样后,对采集的反馈数据做相关对比,然后根据对比结果做出决策。用来测试应用功能表现的方法,侧重应用的可用性,受欢迎程度等,最后决定是否升级
istio实现灰度发布
用户的请求由gateway转发到虚拟服务(virtual service)中,在虚拟服务中定义了版本的权重和目标规则(destination rule),找到指定的目标规则后,通过k8s中标签找到指定的pod,实现不同权重的服务转发
istio实现AB测试
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- match:
- headers:
end-user:
exact: jason #指定用户jason登录为v2版本,其他用户登录为v1版本
route:
- destination:
host: reviews
subset: v2
- route:
- destination:
host: reviews
subset: v3
AB测试的配置方法其实很简单,只要修改虚拟服务(virtual Service)中的配置就可以了
istio实现流量复制
将请求复制一份,并根据策略来处理这个请求,不会影响真是请求
应用场景:
线上问题排查
用真实的流量验证应用功能是否正常
对镜像环境压力测试
收集真实流量数据进行分析
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: nginx
spec:
hosts:
- "*"
gateways:
- nginx
http:
- route:
- destination:
host: nginx
subset: v1
weight: 100
#复制v1的流量到v2
mirror:
host: nginx
subset: v2
mirror_percent: 100
同样要修改虚拟服务(virtual Service)中的配置就可以了