【随手记录】关于灰度发布

news/2024/9/25 11:21:43/文章来源:https://www.cnblogs.com/whaleX/p/18430936

线下测试很难覆盖线上的所有场景,即便是测试设计得非常完善,但仍旧会有差别,简单来说,线下测试与线上至少存在四个方面的不同:

  • 配置不同。线下环境与线上环境的应用版本保持一致不难,但配置方面往往存在差异,如服务规格、调试开关等。
  • 数据不同。线上的数据更真实、更丰富,场景也更多样。比如做网络开发,即使在线下模拟了各种各样的场景,但在线上可能还会出现问题。
  • 依赖不同。依赖的外部服务,比如某些金融软件会依赖人行的接口,这种情况线下环境无法满足,必须使用模拟接口。
  • 负载不同。线上负载更高,且波动性的特征也更真实。如某个时间点产生突增流量,流量峰谷值不同。在线下环境,考虑到资源成本,一般负载较低,高负载的压测会单独考虑。而压测时,场景的覆盖度也会比正常测试有所降低。

我们需要通过灰度发布或线上测试弥补线下测试的不足,其本质是为了降低开发者的心智负担。但是否真的需要灰度测试仍需要从业务场景等方面进行多番考虑:

  • 我们是否允许做线上灰度验证,比如对于某些有明确监管要求的行业,无法使用线上灰度验证。
  • 因为线上线下的不一致无法消除,且成本较高,若在考虑成本的基础上,认为不进行灰度验证带来的风险可以接受,则可以不做灰度验证;
  • 是否有自主运维的能力做线上灰度验证
  • 我们能够做线上灰度验证,还需要具备相应的工程和技术的能力,以及相应工具的准备等

灰度策略:

  • 简单分批,根据负载均衡动态分配

    版本一致,对业务没有影响
    有监控措施,可以观察容器、业务状态
    服务比例、持续时间

  • 外部流量灰度

    根据流量按比例分布 或者按照某一特征分配(header cookie等)
      1、运营商、IP属地等特征
      2、hash分组
      3、header cookie等特征
      4、提前做好灰度标识
    ingress 做外部流量灰度,设置好灰度标识后,灰度验证的流程如下
       客户端 ingress网关 配置服务 灰度策略
    业务请求之前,先获取灰度配置,然后所有请求都携带灰度配置

    版本一致,对业务没有影响
    有监控措施,可以观察容器、业务状态
    服务比例、持续时间
    先流量切换,再清理工作负载,观察一段时间

    内部服务之间调度没有根据特征做调度

  • 外部流量 + 内部流量灰度

    istio实现内部rpc调度
    要保证版本的兼容性(包括中间件、缓存、数据库等)
    应用版本更新和流量的调整要串行处理,先调整版本依赖关系,再进行灰度测试

对于灰度场景,我们的建议是,首先,按优先级逐步建设;其次,先解决数据库之外的中间件问题;第三,尽量寻求专业的技术团队获取实施方案,如 MSE 团队。

 


灰度测试:将自己的产品首先拿出来给一部分目标人群使用,通过她们的使用结果和反馈来修改产品的一些不足,做到查漏补缺,完善产品的功能,使产品的质量得到提高。这样产品尽早的与用户接触能为以后产品的正式发布打下基础

黑盒测试:不知道内部实现,功能性测试,测试输入输出正确

白盒测试:程序逻辑、结构测试,穷举所有可能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/803410.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中电金信:源启智能视觉分析系统~助力各行业破局升级,释放新质生产力

​ 作为人工智能与计算机视觉的交叉范畴,智能视觉模仿人类视觉机能,来对各种形式的视觉输入予以处理、理解以及决策。当下,智能视觉已然发展为应用广泛、市场覆盖面大且形式多元的产业方向,获得了国家政策的强力支持。数字化时代搭台,国家政策助力。大量传统企业迫切希望通…

Linux 中awk命令同时指定多个分割符

001、[root@localhost test]# ls a.txt [root@localhost test]# cat a.txt ## 测试数据 aadd kk;gene=ABEK:ett 8735 fdfk jj;gene=IYNF:34DF UYG [root@localhost test]# awk -F "[gene=|:]" {print $2} a.txt ## 使用-F 参数无…

【随手记录】docker部署jenkins,集成maven、spring项目

1、下载镜像文件到服务器docker pull jenkins/jenkins:lts-jdk17或离线导入镜像:docker load -i jenkins-lts-jdk17检查镜像是否导入:docker images|grep jenkinsjenkins/jenkins lts-jdk17 7a7add0bf3da 2 weeks ago 470MB2024年6月以后国内很多大型的Docker镜像站…

CH585烧录

目前最新版本ISP工具还未更新至官网,旧版ISP工具还不包含CH585烧录选项。 可通过最新版本Mounriver Studio导出ISP工具, 除此之外,还需要更换下配置文件,右键Mounriver Studio打开文件所在位置,将名称为WCH55xISPDLL.dll的配置文件替换到该路径下:D:\MounRiver\MounRiver…

查看exe启动命令和参数

#qq.exe可以更换为任何正在运行的进程wmic process where caption="qq.exe" get caption,commandline /value

寄存器传值——函数剖析

寄存器传值导致的未定义行为寄存器传值——函数剖析 现象 实验环境:Ubuntu20,x86-64指令集 #include <stdio.h>int sum(int a, int b){return a+b; }int main() {int aa = sum(5,3);printf("%d, %d\n", 9);return 0; }编译器提示我们 printf()函数少一个参数…

Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Sep 2024)

Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Sep 2024)Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Sep 2024) Windows 11, version 23H2,企业版 arm64 x64 请访问原文链接:https://sysin.org/blog/windows-11/,查看最新版…

【YashanDB知识库】YAS-04110 invalid variant name

本文转自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7369202.html?templateId=1718516 【标题】错误码处理 【问题分类】查询语句报错 【关键字】YAS-04110 【问题描述】执行特定sql时,遇到相应报错 【问题原因分析】字段中含有保留字,应使用双引号包裹字…

章14——Hashtable

键和值为NULL时会抛出空指针异常。KEY重复且无NULL时同样会替换,和HashMap是一样的。按照2倍+1的规律去扩容与HASHMAP对比PROPERTIES,也是MAP接口的实现类,是Hashtable的子类 .properties 文件通常是用于数据库的配置文件,储存数据库的用户名密码等东西 详细可见博客园博客…

mac安装allure成功后pycharm虚拟环境allure不可用

mac安装allure成功pycharm虚拟环境cmd提示zsh: command not found: allure mac查看安装成功在虚拟环境查看失败确认虚拟环境变量 如果 Allure 仍然不可用,检查虚拟环境中的 PATH 环境变量是否包含了 Allure CLI 的路径。在虚拟环境中,你可以运行以下命令来查看 PATH: echo $…

如何删除 WPS 在图片文件属性中添加的“属性修改”选项卡

近期发现 WPS 2023 这一个非常恼人的特性,在图片文件的属性窗口里面乱加第三方选项卡。同事的电脑安装了这个版本,就让同事从注册表试了一下。还好金山他们藏的不是很深,借助 GPT 很快也就找到了。这里再用鄙人自己的虚拟机演示一遍。HKEY_CLASSES_ROOT\*\shellex\PropertyS…

POST请求的艺术:如何有效使用POST方法

在HTTP协议中,POST方法是一种用于向服务器提交数据的请求方式。与GET请求不同,POST请求将数据包含在请求体(request body)中,而不是URL中。这使得POST请求更适合传输大量数据和敏感信息。本文将探讨如何有效使用POST方法,以及它在现代Web开发中的应用。POST请求的基本概念…