传统型
这种方式基本上很多中小型企业都在用,尤其是政府或是对企业内部的系统。通常都是直接停服务,将正在运行的程序包备份到指定目录,将新的程序包上传到服务器,停服务,替换老的包,启动服务。
优点:
1、操作人员容易理解,服务少时操作简单。
2、节省资源。
缺点:
1、服务多的时候操作繁琐,效率极低。
2、需要停很长时间服务,所以通常都是晚上或是用户不使用阶段进行。如果是要求停服务时间短的产品或是公司不建议使用这种方式。
蓝绿发布
什么是蓝绿发布?
理解:就是在运行环境下再每个服务对应的准备一套服务器,例如:现在生产时A套服务服务器,再根据A套服务器准备相同数据的服务器(B),在发布的时候在B服务上部署本次要上生产的服务。然后启动B套服务器上的服务,切网关代理到B上,停A上的上官服务。通常生产上部署在的A称为蓝色,部署在B上的称为绿色。
优点:
1、在绿色环境下进行测试验证,验证通过后可以直接切换为生产。
2、停服务时间几乎可以忽略,用户无感知,平滑过渡。
3、回退速度非常快。
缺点:
1、服务器是需要的二倍,成本较高。
2、服务配置等操作更复杂。
滚动发布
什么是滚动发布?
主要是解决蓝绿发布设备硬件倍增的问题。新服务和老服务是混在一起的。就是在升级部署过程中,并不是启动所有新版本服务,而是先启动一台新版本,再停止一台老版本,然后再启动一台新版本,再停止一台老版本,直到升级完成,这样的话,如果日常需要10台服务器,那么升级过程中也就只需要11台就行了。
优势:
1、用户无感知,平滑过渡
2、服务器成本新增较低。
劣势:
1、回滚困难,尤其是微服务,互相调用关系复杂情况下那将是灾难的。将新版本流量从 LB 上摘除,清除新版本,发老版本,再将 LB 流量接入老版本。和发布过程一样。
2、部署时间慢,取决于每阶段更新时间;
3、发布策略较复杂;
灰度发布(金丝雀发布)
什么是灰度发布?
灰度发布只升级部分服务,类似于蓝绿部署,但又不完全相同。灰度发布采用对用户有筛选的分流机制,将新版本应用只针对少量用户开放,在保障整体系统稳定的情况下,尽早发现、调整问题,这种方式也叫金丝雀发布。只准备几台服务器,在上面部署新版本的系统并测试验证。测试通过之后,担心出现意外,还不敢立即更新所有的服务器。 先将线上的一万台服务器中的10台更新为最新的系统,然后观察验证。确认没有异常之后,再将剩余的所有服务器更新。
灰度发布操作过程:
1、区分用户规则,就是让那些用户走那些服务。可以一用权重、权限、用户id等来区分控制。
2、预制规则代码,在网关中写好。
3、看选用的什么区分控制方式,来确定是否需要修改元数据。
如果选用权重的方式那么只需要在网关中将规则代码写好即可。
优点:
1、用户无感知,平滑过渡。
2、初始灰度的时候就可以发现、调整问题,影响范围可控。
3、相对节省服务器成本。
缺点:
1、时间成本高,整个灰度从前期的灰度策略直到最后完全上线要耗费很大的时间
同时维护新旧两套代码、两套配置,以及版本之间的耦合问题
2、自动化要求高
可以支持A/B测试:就是一部份用户A使用,一部分用户B来测试。
参考:1、常见应用发布方式浅析_zhinengyunwei的博客-CSDN博客_应用发布
2、一文搞懂蓝绿发布、灰度发布和滚动发布 - 努力哥 - 博客园