首页 > 其他分享 >【随手记录】关于灰度发布

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

时间:2024-09-25 11:12:09浏览次数:10  
标签:负载 随手 记录 验证 流量 灰度 测试 线下

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

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

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

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

灰度策略:

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

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

  • 外部流量灰度

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

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

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

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

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

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

 


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

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

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

标签:负载,随手,记录,验证,流量,灰度,测试,线下
From: https://www.cnblogs.com/whaleX/p/18430936

相关文章

  • Leetcode 1472. 设计浏览器历史记录
    1.题目基本信息1.1.题目描述你有一个只支持单个标签页的浏览器,最开始你浏览的网页是homepage,你可以访问其他的网站url,也可以在浏览历史中后退steps步或前进steps步。请你实现BrowserHistory类:BrowserHistory(stringhomepage),用homepage初始化浏览器类。void......
  • Lab3 记录
    Part3A:leaderelection1.选举主要流程新服务器加入集群服务器在启动时状态是Follower。只要持续接收到Leader或Candidate的心跳信息,就继续保持Follower状态。开始选举每个Server都有一个随机的选举超时时间,选举超时在一个固定区间内随机选择(例如,150-300毫秒)如果Follo......
  • 2024.9.[23, 24]训练记录
    23上午whk。辅助角公式。诱导公式。23下午莫队:原序列分块。询问排序:第一关键字为左端点所在块的编号,第二关键字为右端点编号。回滚莫队:适用于增加或删除操作其中一个复杂度较大,但另一个较小的情况。可以做到只使用一种操作。排序后按照左端点的块编号一块一块做。排完......
  • redis内容记录
    redis的基本数据类型String:是最基本的数据类型,它可以存储任何二进制安全的数据。不仅能存放文本数据,还能保存图片、音频、视频、压缩文件等二进制数据。它们通常用于缓存。Hash:哈希类型,其中键值对中的值本身又是一个键值对结构,hash特别适合用于存储对象。List:Redis列表,一个......
  • 20240924 练习记录
    3个DP,还想了几道题,但不会。*P3349[ZJOI2016]小星星考虑树上的点最终会对应在图上的哪个点,设\(f_{x,i}\)表示树上的点\(x\)对应图上点\(i\)时的方案数,当\(x\)对应\(i\)后,在树上\(x\)的所有子节点也必须像在树上一样,在图上和\(i\)之间有连边,有了这条限制,可以写......
  • 化学套卷练习记录
    目录化学套卷练习记录202412024.9.202024苏州期初——【考试】59/7522024.9.242023年4月石家庄二模——【练习】58化学套卷练习记录202412024.9.202024苏州期初——【考试】59/75【总结】待upd【传送门】https://www.bilibili.com/video/BV15wsme5ELC22024.9.242023......
  • 微信聊天记录恢复最新恢复小技巧!
    微信在日常聊天记录中存有许多重要的数据,如工作文件、转账记录、视频照片等。这些聊天记录既便于日常工作的复盘,也能作为珍贵的聊天记忆保存在微信上。但是,如果我们不小心把微信删了,那聊天记录需要怎样恢复呢?针于对这个问题,在这里小编给大家总结了几点,帮助大家恢复微信聊天记录......
  • 打靶记录18——narak
    靶机:https://download.vulnhub.com/ha/narak.ova推荐使用VMWare打开靶机难度:中目标:取得root权限+2Flag攻击方法:主机发现端口扫描信息收集密码字典定制爆破密码Webdav漏洞PUT方法上传BF语言解码MOTD注入CVE-2021-3493提权主机发现arp-scan-l尝......
  • Drive.js 的一些 Api 使用记录
    文章目录2024年drive.js的基础使用想在下一步的时候处理些逻辑呢?(同步)Element的各种选择器2024年drive.js的基础使用安装就跳过了npminstalldriver.js,一行代码就可以搞定官网的BasicUsage基础使用的截图如下:想在下一步的时候处理些逻辑呢?(同步)......
  • nodejs child_process 操作git 提交记录 提取git commit信息
    /***记录发布时的commit信息,用于区分内网版本包之间的差异*/importpathfrom'path';import{writeFileSync}from'fs';import{execSync}from'child_process';letoutputFileName=process.argv[2];if(!outputFileName){outputFileNam......