蓝绿部署
概念
蓝绿部署是一种通过冗余资源保障服务高可用的发布策略。它会同时维护两套完全相同的生产环境(蓝色旧版和绿色新版),平时仅由蓝色环境承载流量,绿色环境作为热备待命。发布时只需将流量无缝切换至绿色环境,旧版则转为备用状态。
这种设计既确保了发布过程零停机,又能在新版本故障时实现秒级回切,大幅降低业务风险。由于双环境资源对等,无需担心容量不足问题,但需要额外支付一倍的资源成本。
蓝绿部署特别适合对稳定性要求严苛的关键业务系统,通过牺牲部分资源成本换取绝对的发布安全性和快速回滚能力。
如下图所示,某服务旧版本为v1,对新版本v2进行冗余部署。版本升级时,将现有流量全部切换为新版本v2。当新版本v2存在问题或者发生故障时,可以快速切回旧版本v1。
优点
部署结构简单,运维方便。
服务升级过程操作简单,周期短。
缺点
资源冗余,需要部署两套生产环境。
新版本故障影响范围大。
A/B测试
概念
A/B测试是一种通过对比实验优化产品决策的技术方法。它会将用户流量随机分配到两个或多个不同版本(A版和B版)的服务或界面中,在相同运行环境下收集各版本的用户行为数据。这是一种基于请求内容匹配的灰度发布策略,只有匹配特定规则的请求才会被引流到新版本,常见的做法包括基于HTTP Header和Cookie。
这种方案既能验证新功能/改版的实际效果,又能有效控制产品迭代风险。由于采用实时分流机制,整个过程无需停机切换,且可以随时终止实验恢复原状。
如下图所示,某服务当前版本为v1,现在新版本v2要上线。希望安卓用户可以尝鲜新功能,其他系统用户保持不变。通过在监控平台观察旧版本与新版本的成功率、RT对比,当新版本整体服务符合预期后,即可将所有请求切换到新版本v2,最后为了节省资源,可以逐步下线到旧版本v1。
优点
可以对特定的请求或者用户提供服务新版本,新版本故障影响范围小。
需要构建完备的监控平台,用于对比不同版本之间请求状态的差异。
缺点
仍然存在资源冗余,因为无法准确评估请求容量。
发布周期长。
金丝雀发布
概念
金丝雀发布(Canary Release)是一种渐进式服务发布策略,通过小范围流量试用来验证新版本稳定性。其核心原理类似煤矿中用金丝雀探测危险——先部署少量新版本实例(如5%流量),其余流量仍由旧版本处理。通过监控新版本的错误率、延迟等关键指标,确认无异常后再逐步扩大新版本流量比例(如30%→50%→100%),最终完成全量升级。若期间发现问题,则立即回滚至旧版本,将影响范围控制在最小。
如下图所示,某服务当前版本为v1,现在新版本v2要上线。为确保流量在服务升级过程中平稳无损,采用金丝雀发布方案,逐步将流量从老版本迁移至新版本。
优点
按比例将流量无差别地导向新版本,新版本故障影响范围小。
发布期间逐步对新版本扩容,同时对老版本缩容,资源利用率高。
缺点
流量无差别地导向新版本,可能会影响重要用户的体验。
发布周期长。