蓝绿发布、红黑发布、灰度发布和滚动发布组最终的目标都是避免因发布导致流量的丢失或服务不可用的问题
四种方式均可以做到平滑式升级,在升级过程中服务仍然保持服务的连续性,升级对外界是无感知的。那生产上选择哪种部署方法最合适呢?这取决于哪种方法最适合你的业务和技术需求。如果你们运维自动化能力储备不够,肯定是越简单越好,建议蓝绿发布,如果业务对用户依赖很强,建议灰度发布。如果是K8S平台,滚动更新是现成的方案,建议先直接使用。
蓝绿发布:两套环境交替升级,旧版本保留一定时间便于回滚。
红黑发布: 申请新环境,删除老版本
灰度发布:根据比例将老版本升级,例如80%用户访问是老版本,20%用户访问是新版本。
滚动发布:按批次停止老版本实例,启动新版本实例。
项目逻辑上分为AB组,在项目系统时,首先把A组从负载均衡中摘除,进行新版本的部署。B组仍然继续提供服务。
当A组升级完毕,负载均衡重新接入A组,再把B组从负载列表中摘除,进行新版本的部署。A组重新提供服务。
1.如果出问题,影响范围较小;
2.发布策略简单;
3.用户无感知,平滑过渡;
4.升级/回滚速度快。
1.需要准备正常业务使用资源的两倍以上服务器,防止升级期间单组无法承载业务突发;
2.短时间内浪费一定资源成本;
3.基础设施无改动,增大升级稳定性。
当前服务都运行在集群A上
在云上申请一个黑色集群 B,在 B 上部署新版本的服务; 等到 B 升级完成
最后一次性地把负载均衡全部指向 B,并把 A 集群从负载均衡列表中删除,并释放集群 A 中所有机器。
可以看到,与蓝绿部署相比,红黑部署只不过是充分利用了云计算的弹性伸缩优势,从而获得了两个收益:一是,简化了流程;二是,避免了在升级的过程中,由于只有一半的服务器提供服务,而可能导致的系统过载问题。
1.从LB摘掉灰度服务器,升级成功后再加入LB;
2.少量用户流量到新版本;
3.如果灰度服务器测试成功,升级剩余服务器。
1.保证整体系统稳定性,在初始灰度的时候就可以发现、调整问题,影响范围可控;
2.新功能逐步评估性能,稳定性和健康状况,如果出问题影响范围很小,相对用户体验也少;
3.用户无感知,平滑过渡。
自动化要求高
滚动发布是指每次只升级一个或多个服务,升级完成后加入生产环境,不断执行这个过程,直到集群中的全部旧版本升级新版本。
1.保证整体系统稳定性,在初始灰度的时候就可以发现、调整问题,影响范围可控;
2.新功能逐步评估性能,稳定性和健康状况,如果出问题影响范围很小,相对用户体验也少;
3.用户无感知,平滑过渡。
自动化要求高
灰度测试,就是在某项产品或应用正式发布前,选择特定人群试用,逐步扩大其试用者数量,以便及时发现和纠正其中的问题。
内测的形式可以分为:封闭性内测和开放性内测。封闭性内测即只邀请少数玩家参与游戏。开放性内测即只要玩家注册登入游戏就可以,是没有限制的,类似于全民性参与,一般情况下,内测由于会删档,是不向玩家收费的。
扩展资料:在内测阶段,游戏公司邀请一部分玩家对游戏运行性能,游戏设计,游戏平衡性,游戏BUG以及服务器负载等进行多方面测试,以确保游戏在公测后能顺利进行。
内测结束后进入公测,即公开测试,内测资料进入公测通常是不保留的,但现在越来越多的游戏公司为了奖励内测玩家,采取公测奖励措施或直接进行不删档内测。
参考资料:百度百科-灰度测试
灰度测试,就是在某项产品或应用正式发布前,选择特定人群试用,逐步扩大其试用者数量,以便及时发现和纠正其中的问题
灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
及早获得用户的意见反馈,完善产品功能,提升产品质量 让用户参与产品测试,加强与用户互动 降低产品升级所影响的用户范围
灰度发布与互联网公司常用A/B测试似乎比较类似,老外似乎并没有所谓的灰度发布的概念。按照wikipedia中对A/B测试的定义,A/B测试又叫:A/B/N Testing、Multivariate Testing,因此本质上灰度测试可以算作A/B测试的一种特例。只不过为了术语上不至于等同搞混淆,谈谈自己理解的两者的差异。
灰度发布是对某一产品的发布逐步扩大使用群体范围,也叫灰度放量
A/B测试重点是在几种方案中选择最优方案
对于一般的小系统并不需要单独的灰度发布引擎,可以参考A/B测试中做法,在页面javascript或服务器端实现分流的规则即可。但对于大型的互联网应用而言,单独的用于管理用户分流的发布引擎就很有必要了。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)