发布策略

常见的发布策略有蓝绿发布红黑发布金丝雀(灰度)发布滚动发布等。

蓝绿发布

概念:蓝绿发布是一种以最小的停机时间做服务升级的策略。需要维护的两个版本的环境分别称为“蓝环境”和“绿环境”。一般当前生产流量指向环境为绿环境,而在蓝环境上部署新版本,短时间内作为测试环境。
发布流程:首先将一半的服务流量从负载均衡列表中移除,并且更新服务版本,验证新版本没有问题后,将生产流量指向蓝环境,然后对老版本的绿环境进行版本升级,最后将所有服务流量加回负载均衡。

蓝绿发布

特点:

  • 升级过程中无需停机,用户感知小
  • 升级过程一半资源提供服务
  • 升级/回滚速度快
  • 如果出了问题,影响面较广

红黑发布

概念:与蓝绿发布类似,红黑发布也是通过两个环境完成软件版本的升级,将当前生产流量指向的环境称为红环境,新版本环境称为黑环境。
发布流程:需申请新资源用于部署黑环境,在黑环境部署新版本的服务;黑环境部署完成后,一次性将生产流量指向黑环境;释放红环境的资源。

红黑发布

特点:

  • 升级过程无需停机,用户感知小
  • 短时间内需要使用双倍资源
    与蓝绿发布相比,红黑发布充分利用了云计算的弹性伸缩的优势,实现:
  • 简化发布流程
  • 避免在升级的过程中,由于只有一半资源提供服务,而导致的系统过载问题

灰度发布

概念:灰度发布属于增量发布,新老版本同时为客户提供服务。灰度发布的主要目的是保证系统的可用性。每一次的线上变更都无法保证系统100%的无bug,所以变更后要在线上小范围验证,等没问题再全面放开。而金丝雀发布是灰度发布的一种实现。

金丝雀发布由来:以前矿工开矿,在下矿洞前需要检查下方是否有毒气,矿工们先会放一只金丝雀进去探是否有有毒气体,看金丝雀能否活下来。

发布流程:在现有环境中部署少量服务的新版本(金丝雀),部署完成后,对线上流量进行监测,如果没有问题就对老版本服务进行全量升级。

灰度发布

特点:

  • 用户体验影响小,灰度发布过程出现问题影响范围较小
  • 新版本功能逐步发布,可以逐步评估新版本服务性能、稳定性和健康状态
  • 发布自动化程度不够,发布期间可能引发服务中断

滚动发布

在金丝雀发布基础上的进一步优化改进,是一种自动化程度较高的发布方式,用户体验比较平滑,是目前成熟型技术组织采用的主流发布方式。

滚动发布

你可能感兴趣的:(发布策略)