运维的发布与区别

本文详细介绍了四种常见的无中断服务上线的部署策略:蓝绿部署、灰度发布(金丝雀发布)、滚动发布和红黑部署。蓝绿部署通过两套环境确保服务连续性,灰度发布则是逐步替换旧版本。滚动发布在集群内部平滑升级,而红黑部署结合了不可变基础设施的优势。此外,文章还探讨了AB测试在产品迭代中的作用,用于比较不同版本的效果。这些策略在降低风险、提高效率和确保用户体验方面各具优势,适用于不同场景下的软件发布需求。
摘要由CSDN通过智能技术生成

运维的发布方式

1蓝绿部署

  • 蓝绿部署,英文名Blue Green Deployment,是一种可以保证系统在不间断提供服务的情况下上线的部署方式,用于0 downtime应用上线时的一套部署策略
  • 旧版本可以称为蓝色环境,而新版本则可称为绿色环境。一旦生产流量从蓝色完全转移到绿色,蓝色就可以在回滚或退出生产的情况下保持待机,也可以更新成为下次更新的模板

蓝绿部署的模型
在这里插入图片描述
在没有上线的正常情况下,集群A和集群B的代码版本是一致的,并且同时对外提供服务

在系统升级的时候下,我们首先把一个集群(比如集群A)从负载列表中摘除,进行新版本的部署。集群B仍然继续提供服务

当集群A升级完毕,我们把负载均衡重新指向集群A,再把集群B从负载列表中摘除,进行新版本的部署。集群A重新提供服务
在这里插入图片描述
最后,当集群B也升级完成,我们把集群B也恢复到负载列表当中。这个时候,两个集群的版本都已经升级,并且对外的服务几乎没有间断过。
在这里插入图片描述

1.1蓝绿部署适用的场景

  • 不停止老版本,额外搞一套新版本,等测试发现新版本OK后,删除老版本
  • 蓝绿发布是一种用于升级与更新的发布策略,部署的最小维度是容器,而发布的最小维度是应用
  • 蓝绿发布对于增量升级有比较好的支持,但是对于涉及数据表结构变更等等不可逆转的升级,并不完全合适用蓝绿发布来实现,需要结合一些业务的逻辑以及数据迁移与回滚的策略才可以完全满足需求

1.2蓝绿部署的优点

  • 可以始终很放心的去部署inactive环境,如果出错并不影响生产环境的服务,如果切换后出现问题,也可以在非常短的时间内把再做一次切换,就完成了回滚。而且同时在线的只有一个版本。蓝绿部署无需停机,并且风险较小
  • 在部署的过程中,应用始终在线。并且,新版本上线的过程中,并没有修改老版本的任何内容,在部署期间,老版本的状态不受影响。这样风险很小,并且,只要老版本的资源不被删除,理论上,可以在任何时间回滚到老版本

1.3蓝绿部署的缺点

  • 当切换到蓝色环境时,需要妥当处理未完成的业务和新的业务。如果数据库后端无法处理,会是一个比较麻烦的问题
  • 有可能会出现需要同时处理“微服务架构应用”和“传统架构应用”的情况,如果在蓝绿部署中协调不好这两者,还是有可能导致服务停止
  • 需要提前考虑数据库与应用部署同步迁移/回滚的问题
  • 蓝绿部署需要有基础设施支持
  • 在非隔离基础架构( VM 、 Docker 等)上执行蓝绿部署,蓝色环境和绿色环境有被摧毁的风险
  • 冗余产生的额外维护、配置的成本,以及服务器本身运行的开销较大

2灰度发布(金丝雀发布)

金丝雀发布(Canary)也是一种发布策略,蓝绿部署是准备两套系统,在两套系统之间进行切换,金丝雀策略是只有一套系统,逐渐替换这套系统(即在黑与白之间,能够平滑过渡的一种发布方式)

例如在服务器上进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来

2.1运行过程描述

  1. 掐断“金丝雀”服务器的流量
  2. “金丝雀”服务器更新升级到新版本
  3. 在“金丝雀”服务器上对应用进行自动化测试
  4. 将“金丝雀”服务器重新配置到LB中(连通性和健康检查)
  5. 如果“金丝雀”在线使用测试成功,升级剩余的其他服务器。(否则就回滚)

2.2特点

  • 精确的流量分发控制
    需要有确切的策略保证某特征用户访问新版本,某特征用户访问老版本
  • 需要灵活发布应用
    周期可能会持续很久,所以新旧版本会并存。同时,还有可能各个版本需要各自迭代。版本之间能够区分对应的监控日志信息

3滚动发布

滚动部署,英文Rolling update,同样是一种可以保证系统在不间断提供服务的情况下上线的部署方式,和蓝绿部署不同的是,滚动部署对外提供服务的版本并不是非此即彼,而是在集群下平滑完成版本的升级

集群下的不同节点可以独立进行版本升级。比如在一个16节点的集群中,我们选择每次升级4个节点

在这里插入图片描述

以此类推,最终所有的节点都升级了版本

3.1优点

  • 只需要维护一个集群,成本较低,节约资源
  • 用户无感知,平滑过渡

3.2缺点

  • 上线过程中,两个版本同时对外服务,不容易定位问题,且容易造成数据错乱,不易回滚
  • 升级和回滚以节点为粒度,操作相对复杂
  • 部署时间慢,取决于每阶段更新时间

4红黑部署

这是Netflix采用的部署手段,Netflix的主要基础设施是在AWS上,所以它利用AWS的特性,在部署新的版本时,通过AutoScaling Group用包含新版本应用的AMI的LaunchConfiguration创建新的服务器。测试不通过,找到问题原因后,直接干掉新生成的服务器以及Autoscaling Group就可以,测试通过,则将ELB指向新的服务器集群,然后销毁掉旧的服务器集群以及AutoScaling Group

4.1特点

  • 服务始终在线,同时采用不可变部署的方式,也不像蓝绿部署一样得保持冗余的服务始终在线
  • 在蓝绿色部署中,两个版本可能暂时同时获取请求,而在红黑中,只有一个版本在任何时间点获得流量

5AB测试

AB测试也叫做对照实验,重点是在几种方案中选择最优方案,在产品正式迭代发版本之前,为同一个目标定制两个或以上种方案,将用户流量对应分组,在确保每组用户特征相同的前提下,让用户分别看到不同的方案设计,根据每组用户的真实数据反馈,科学的帮助产品进行决策

5.1三大特性

A/B测试的应用方式决定了它拥有的三大特性: 先验性、并行性和科学性

  • 先验性: 分组对照试验,由试验结果得出结论
  • 并行性: 多组试验同环境同时间进行,更加科学客观对比优劣,且节省验证时间
  • 科学性: 指的是流量分配的科学性——将相似特征的用户均匀的分配到试验组中,确保每个组的用户特征相似,避免有数据偏差,使得结论更具有代表性

5.2应用场景

  • 灰度发布
  • 广告着陆页
  • Web/H5页面
  • App用户体验
  • 媒体广告投放与管理

5.3AB测试与蓝绿部署的区别

  • A/B 测试与蓝绿部署的区别在于, A/B测试目的在于通过科学的实验设计、采样样本代表性、流量分割与小流量测试等方式来获得具有代表性的实验结论,并确信该结论在推广到全部流量可信
  • A/B 测试和蓝绿部署可以同时使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值