概念

一、灰度(金丝雀)发布

定义

灰度发布又叫金丝雀发布,只升级部分服务,即让一部分用户继续用老版本,一部分用户开始用新版本,如果用户对新版本没什么意见,那么逐步扩大范围,把所有用户都迁移到新版本上面来。 (金丝雀发布由来。以前,旷工开矿,在下矿洞前需要检查下方是否有毒气,矿工们先会放一只金丝雀进去探是否有有毒气体,看金丝雀能否活下来。)

实现

原理流量切换与灰度策略.实现方式参考以下 - 基于openresty+nginx实现前端灰度 - 基于apollo+ribbon实现后台灰度(关联知识点eureka元数据metadata-map)

二、蓝绿部署

定义

把环境分为AB组,首先把A组从负载均衡中摘除,把B组加入负载均衡中提供服务。类型A/B Test出发点不一样。

优缺点

  • 发布简单
  • 硬件数量翻倍

三、滚动发布

定义

滚动发布是指每次只升级一个或多个服务,升级完成后加入生产环境,不断执行这个过程,直到集群中的全部旧版本升级新版本。在金丝雀发布基础上的进一步优化改进,是一种自动化程度较高的发布方式,用户体验比较平滑,是目前成熟型技术组织所采用的主流发布方式。

总结

  • 蓝绿发布:操作简单,硬件数量翻倍,以硬件换取操作。SLB进行切换几乎不停机,需考虑新旧环境切换对业务的影响。
  • 灰度发布:硬件数量在原数量+1,此方式实现不停机发布,并且通过分流实现新旧并行,出问题后也可区分出新旧环境。
  • 滚动发布:硬件数量在原数量+1,此方式实现不停机发布,并没有灰度发布明确的分流,出问题后不能快速区分出新旧环境,滚动发布主要体现出自动的发布策略依赖自动发布工具。如k8s就是现成的支持。滚动发布对于达到一定业务体量的公司,考虑到用户体验对业务的关键性,则需要投入研发资源开发支持滚动式发布的工具和配套的智能 LB,实现自动化和零停机的发布。
  • 滚动与灰度:*滚动式发布一般和金丝雀发布配合,先发一台金丝雀去验证流量,再按批次增量发布。两者主要区别在于灰度强调是部分节点给指定用户体验没问题后再扩大发布,而滚动强调的是自动节点的更换,相对有一定风险两都结合即减少人工工作量风险也降低。*

实际实现

Kubernetes 项目中一个重要的设计思想:控制器模式Deployment,即Pod的“水平扩展 / 收缩”(horizontal scaling out/in)。这个功能,是从 PaaS 时代开始,一个平台级项目就必须具备的编排能力。

举个例子,如果你更新了 Deployment 的 Pod 模板(比如,修改了容器的镜像),那Deployment 就需要遵循一种叫作“滚动更新”(rolling update)的方式,来升级现有的容器。而这个能力的实现,依赖的是 Kubernetes 项目中的一个非常重要的概念(API 对象):ReplicaSet。

ReplicaSet 的结构

更重要的是,Deployment 控制器实际操纵的,正是这样的 ReplicaSet 对象,而不是 Pod 对象

Deployment,与 ReplicaSet,以及 Pod 的关系

通过这张图,我们就很清楚的看到,一个定义了 replicas=3 的 Deployment,与它的ReplicaSet,以及 Pod 的关系,实际上是一种“层层控制”的关系。

其中,ReplicaSet 负责通过“控制器模式”,保证系统中 Pod 的个数永远等于指定的个数(比
如,3 个)。这也正是 Deployment 只允许容器的 restartPolicy=Always 的主要原因:只有在容器能保证自己始终是 Running 状态的前提下,ReplicaSet 调整 Pod 的个数才有意义。

而在此基础上,Deployment 同样通过“控制器模式”,来操作 ReplicaSet 的个数和属性,进
而实现“水平扩展 / 收缩”和“滚动更新”这两个编排动作。

有了 Deployment 的能力之后,你可以非常轻松地用它来实现金丝雀发布、蓝绿发布,以及 A/B 测试等很多应用发布模式

灰度(金丝雀)发布、蓝绿部署、滚动发布相关推荐

  1. 蓝绿部署滚动部署金丝雀发布(灰度发布)A/B测试

    在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本.但是这种简单的发布方式存在两个问题,一方面,在新版本升级过程中,服务是暂时中断的,另一方面,如果 ...

  2. 首富带你畅谈:蓝绿部署、滚动发布、灰度发布/金丝雀发布

    首富带你畅谈:蓝绿部署.滚动发布.灰度发布/金丝雀发布 笔者: 张首富 时间: 2019-01-24晚 QQ群: 895291458 博客地址: www.zhangshoufu.com 根据2018年 ...

  3. 微服务下蓝绿部署、红黑部署、AB测试、灰度发布、金丝雀发布、滚动发布的概念与区别...

    更多内容关注微信公众号:fullstack888 在有关微服务.DevOps.Cloud-native的迭代过程中,不可避免的需要"上线",上线就需要部署,需要部署就意味着有修改, ...

  4. 蓝绿部署、红黑部署、AB测试、灰度发布、金丝雀发布、滚动发布的概念与区别...

    蓝绿部署.红黑部署.AB测试.灰度发布.金丝雀发布.滚动发布的概念与区别 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wangyinghong_2 ...

  5. 【项目实战】正确辨析蓝绿部署、金丝雀发布(灰度发布)、滚动发布、A/B测试

    一.背景 蓝绿部署.A/B测试.金丝雀发布,以及灰度发布.流量切分等,经常被混为一谈,影响沟通效率. 根本原因是这些名词经常出现,人们耳熟能详能够熟练地谈起,对这些术语的理解却没有达成一致. 下面是从 ...

  6. 蓝绿部署、AB测试、灰度发布、⾦丝雀发布、滚 动发布的概念与区别

    ⼀.蓝绿部署(Blue/Green Deployment) 过去的 10 年⾥,很多公司都在使⽤蓝绿部署(发布)来实现热部署,这种部署⽅式具有安全.可靠的特点.蓝绿部署虽然算不上" Sliv ...

  7. git灰度发布版本_灰度发布/蓝绿发布_部署到Kubernetes_选择部署方式_用户指南_CodePipeline - 阿里云...

    蓝绿发布 蓝绿部署是不停老版本,部署新版本然后进行测试,确认OK后将流量逐步切到新版本.蓝绿部署无需停机,并且风险较小. 示例 本例是一个 nginx 应用,包含一个 deployment. serv ...

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

    在项目迭代的过程中,不可避免需要"上线".上线对应着部署,或者重新部署:部署对应着修改:修改则意味着风险. 目前有很多用于部署的技术,有的简单,有的复杂:有的得停机,有的不需要停机 ...

  9. kubernetes(七)项目部署方式:蓝绿部署,灰度发布/金丝雀发布,滚动更新

    在项目迭代的过程中,不可避免需要上线进行部署. 目前项目部署的方式有很多种:像重新部署,蓝绿部署,金丝雀部署(灰度部署),滚动更新.本文简单介绍下这些常见的部署方案以及使用k8s怎么进行对应部署 重新 ...

  10. 蓝绿部署、滚动部署、灰度发布、金丝雀发布-概念介绍---应用部署001

    在项目迭代的过程中,不可避免需要"上线".上线对应着部署,或者重新部署:部署对应着修改:修改则意味着风险. 目前有很多用于部署的技术,有的简单,有的复杂:有的得停机,有的不需要停机 ...

最新文章

  1. 重庆python就业工资待遇-重庆达内毕业的Python学员都在做什么?能拿多少工资?...
  2. Python 编码规范 TODO注释
  3. 北京昌平回龙观史各庄找PHP开发人员一起做私活
  4. centos中mysql操作命令,Linux系统中MySQL的常用操作命令
  5. e盘是否具有读写权限_轻松搭建MySQL主从复制、读写分离(双机热备)
  6. 程序员微信头像_微信头像暴露了你的层次:层次越低的人,越喜欢用这些头像...
  7. 领域驱动设计和业务建模的最佳实现模式
  8. 纯粹经济学 —— 基本概念
  9. 医疗系统流程软件测试用例,医疗管理系统案例测试用例.doc
  10. Python学习七文件和数据格式化
  11. 智能人物画像综合分析系统——Day6
  12. ASPack 2.12
  13. 史上最简单的免费短信验证码案例
  14. 深入理解深度学习——语境词嵌入(Contextual Word Embedding)
  15. 于二〇〇八年十一月二十六日有所思而作
  16. ctf练习之闯关游戏
  17. RxJava 过滤操作符 ofType
  18. 手写一个迷你版的 Tomcat 喵
  19. AD在绘制PCB时候出现 Un-Routed Net Constraint Violation问题解决
  20. 本人大一的课程设计,时间太长,代码可能有些许丢失,欢迎纠错

热门文章

  1. 1.华为设备CPU过高排查过程
  2. 其实能让我们感觉美好的只是回忆而已
  3. 2023年第一砖——IT市场的变和不变
  4. JavaScript中shift() 方法
  5. 浪潮信息做5G服务器,看来浪潮和运营商在5G布局非常深,中标移动开了个好头...
  6. linux安装geoserver、postgis,发布wms、wmts地图服务
  7. animation unity 速度_animator下怎么控制指定动画的播放速度
  8. appletv开发_AppleTV的长期生存能力
  9. 苹果近日更新了 Mac mini 的功耗和热输出 (BTU) 规格
  10. MVVM和MVC模型