设计简介:
灰度平台配置的主键是以域名来做主键配置,以域名来关联规则,依托这些规则来判断哪些哪些请求需要走灰度
为什么要做这个平台
系统的稳定性,多有2方面造成
1.生产环境运行期间,异常造成的服务宕机,造成的系统不可用。
2.在更新服务时因为准备不足或者遗漏造成的更新时服务不可用。
在第一点上我们可以做好监控和告警,使用容器编排工具自动重启,服务集群来避免。
但是第二点人员干涉较多,很容易出现纰漏,所以构建一个灰度的平台,在系统上线后逐步的将系统开放出去,尽早的发现纰漏减少因为更新系统造成的宕机损失
平台功能与使用场景
平台包含规则域名管理、规则管理、比例管理。平台与openresty通过redis联动,规则的筛选通过lua脚本来执行。
域名管理:域名的增加、修改、删除、以及全量灰度修改、全量下线
规则灰度:主要配置请求类型,然后根据不同的请求类型获取对应的参数,通过规则类型(大于等于小于包含不等于等符号)来判断请求是否属于灰度
比例灰度:设置请求有多少数据进入灰度,这里需要注意:比例只能从小到大,最低到1%,最高到100%(第一次设置10%那后续只能从10%往上加)
使用场景:
服务A,B更新,创建服务A,B的灰度服务并在nacos的元空间中增加灰度版本,然后增加域名——规则灰度——ip灰度——白名单——公司IP地址;公司网络访问服务测试灰度内容,无异常后,再根据自己的需要配置参数规则匹配或者比例灰度来进行小部分的发布,当然如果对服务很有信息也可以直接更新到线上