草庐IT

灰度发布、蓝绿部署、金丝雀发布和AB测试及在k8s中的实现

灰度发布、蓝绿部署、金丝雀发布和AB测试都是软件开发和部署中常用的策略,每种策略都有其特定的用途和优势。下面是对这些策略的简要解释:灰度发布(GrayscaleRelease):灰度发布是一种逐步将新版本软件推向用户的方法。通过逐步增加新版本的使用者数量,开发者可以监控新版本的性能和稳定性,并在发现问题时及时回滚。这种方法有助于降低新版本可能带来的风险,并确保平稳过渡。蓝绿部署(Blue-GreenDeployment):蓝绿部署涉及两个完全相同的生产环境:一个“蓝色”环境和一个“绿色”环境。在任何时候,只有其中一个环境(比如蓝色)是活跃的,处理所有的生产流量。当需要部署新版本时,新版本会被部

实战演示k8s部署go服务,实现滚动更新、重新创建、蓝绿部署、金丝雀发布

1前言本文主要实战演示k8s部署go服务,实现滚动更新、重新创建、蓝绿部署、金丝雀发布2go服务镜像准备2.1初始化项目cd/Users/flying/Dev/Go/go-lesson/src/mkdirgoPublishcdgoPublishgomodinitgoPublish2.2编写main.gopackagemainimport( "flag" "github.com/gin-gonic/gin" "net/http" "os")varversion=flag.String("v","v1","v1")funcmain(){ router:=gin.Default() router.G

1W字长文:蓝绿发布、金丝雀发布、滚动发布、A/B测试 原理和实操

背景:蓝绿发布、金丝雀发布、滚动发布、A/B测试,是大家日常常见的发布工作。所以发布的原理和实操是一个非常、非常核心的面试知识点。在40岁老架构师尼恩的读者交流群(50+)中,其相关面试题是一个非常、非常高频的交流话题。只要一面试,基本就会问:对灰度发布了解吗?对蓝绿发布了解吗?对金丝雀发布了解吗?对滚动发布发布了解吗?等等等等很多小伙伴,回答起来,就是干巴巴的几点。导致给面试官的用户体验,非常差。这里尼恩给大家调优,做一下系统化、体系化的梳理。在面试之前,也可以复习一下,使得大家可以充分展示一下大家雄厚的“技术肌肉”,让面试官爱到“不能自已、口水直流”。也一并把这些宝贵内容作为“K8S云原生

蓝绿部署在G行移动办公平台的应用实践

引言G行移动办公平台不仅承接了即时通讯的功能,更是各个办公类应用的服务入口,是全行人员实时沟通交流和日常移动办公的工作平台,因此对该平台的安全运营要求既要做到7*24小时无间断服务,又要做到快速响应业务需求敏捷发布投产。为此,移动办公平台基于容器化架构,通过采用蓝绿部署,从而做到了无中断、用户无感的敏捷发布和长时间安全稳定运行。本文重点以移动办公平台系统为例介绍G行蓝绿部署落地实践。一、蓝绿部署简介蓝绿部署是一种通过运行相同的环境来减少风险和故障时间的部署技术。这些环境被称为蓝色环境和绿色环境。其中只有一个环境是活动环境,该环境服务于所有生产流量。如图1所示,在蓝绿部署中,一共有两套系统:一套

蓝绿发布、滚动发布、灰度发布(金丝雀发布)、A/B测试

服务发布方式在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本。但是这种简单的发布方式存在两个问题,(1)在新版本升级过程中,服务是会暂时中断的。(2)如果新版本有BUG,升级失败,回滚起来也非常麻烦,容易造成更长时间的服务不可用。(3)新功能体验不好,版本升级过程中带来的流量有损,造成用户流失。为了解决这些问题,人们研究出了几种常见的服务发布策略,下面一一介绍。蓝绿发布蓝绿发布所谓蓝绿部署,是指同时运行两个版本的应用,如上图所示,蓝绿发布部署时候需要对服务的新版本进行冗余部署并不停止掉老版本,一般新版本的机器规格和数量与旧版本保持一致,相当

得物SRE视角下的蓝绿发布

一、前言发布变更是影响稳定性的一个重大因素,为了发布异常时能快速回滚,增加发布期间的稳定性,也为了解决多服务部署时互相依赖而导致的发布时间增长等问题,得物在今年引入一种新的发布模式--蓝绿发布。这种发布模式带来了稳定性和效率的提升,这里我们以SRE的视角来解读下得物的蓝绿发布。二、常见的发布形式有哪些?分别有什么优势?全量发布全量发布是早期企业进行系统升级的一种方式,因为早期的服务大多为大型机,单实例程序为主。并没有形成当下流行的微服务架构,因此当发布时往往需要停机发布。生产环境禁止使用这种方式进行部署!滚动发布滚动发布顾名思义,假如生产中16台机器,我们可以分成4批。每批4台机器,每批机器执

【kubernetes】Argo Rollouts -- k8s下的自动化蓝绿部署

蓝绿(Blue-Green)部署简介在现代软件开发和交付中,确保应用程序的平稳更新和发布对于用户体验和业务连续性至关重要。蓝绿部署是一种备受推崇的部署策略,它允许开发团队在不影响用户的情况下,将新版本的应用程序引入生产环境。蓝绿部署的核心思想在于维护两个独立的环境:蓝环境和绿环境。蓝环境是当前正在运行的稳定版本,而绿环境是即将发布的新版本。在进行部署时,首先将新版本部署到绿环境中,并在绿环境中进行严格的测试和验证。一旦新版本通过了各项测试,并被确认为稳定和可靠,就可以将流量从蓝环境切换到绿环境,使用户开始访问新版本。工作流程考虑一个在线购物应用,用户可以浏览商品、添加到购物车并完成购买。为了演

Kubernetes 服务发布方式(蓝绿发布、灰度发布和滚动发布)

目录一、三种常用的项目发布方式1.1蓝绿发布1.2灰度发布(金丝雀发布)1.3滚动发布二、金丝雀的方式升级发布实验三、总结一、三种常用的项目发布方式应用程序升级面临最大挑战是新旧业务切换,将软件从测试的最后阶段带到生产环境,同时要保证系统不间断提供服务。而最为常见三种发布方式分别为:蓝绿发布,灰度发布和滚动发布。三种发布方式的最终目的都是为了减小或避免对应用项目更新时,对客户使用的影响,尽可能避免因发布导致的流量丢失或服务不可用问题。1.1蓝绿发布首先将所有的应用服务集群为蓝绿两组,首先将绿组的集群从负载均衡中移除,蓝组则继续对用户提供服务。此时移除的绿组进行服务的升级,等升级完毕后,再从新将

蓝绿部署、A/B 测试和云雀发布

近些年,“DevOps”非常热门,最近,我们团队讨论了部署最佳实践、热部署、回滚等,当提到蓝绿部署时,大家表现出浓烈的兴趣。蓝绿部署已经在像亚马逊这样的地方实践了 10 多年。它们是一种安全、经过验证的方法。现在,蓝绿部署不是灵丹妙药,但它们有一定的用处。其实还有A/B 测试,甚至 Canary 测试,在所有微服务、DevOps和云原生交流中,有很多关于它们的讨论,因此,我简单归纳了它们的区别。蓝绿部署BlueGreenDeployments的详细介绍请参阅MartinFowler 关于蓝绿部署的链接(http://martinfowler.com/bliki/BlueGreenDeploym

微服务部署:蓝绿发布、滚动发布、灰度发布、金丝雀发布

前言在项目迭代的过程中,不可避免需要上线。上线对应着部署,或者重新部署;部署对应着修改,修改则意味着风险。1.蓝绿发布(Blue/GreenDeployment)①定义蓝绿部署是不停老版本,部署新版本然后进行测试。确认OK后将流量切到新版本,然后老版本同时也升级到新版本。②特点蓝绿部署无需停机,并且风险较小。③部署过程部署版本V1的应用(初始的状态)所有外部请求的流量都打到这个版本上。部署版本V2的应用版本V2的代码与版本V1不同(新功能、Bug修复等)。将流量从版本1切换到版本2如版本V2测试正常,就删除版本V1正在使用的资源(例如实例),从此正式用版本V2。④小结从过程不难发现,在部署的过
12