在互联网软件的生产过程中有一环是必不可少的,那便是部署、发布。通过把代码部署在特定环境中,再对外向用户发布新功能。早期的时候互联网刚刚发展起来,涌入互联网的网民还比较少,服务器资源也比较昂贵、紧张,这时候的发布一般就是把旧版本下掉,然后再部署新版本,在发布期间,服务不可用。这样的体验其实不太好,因为发布期间我在这个应用上无法进行任何操作。

但随着互联网的快速发展,尤其是云计算起来之后,服务器资源变得不再昂贵了,互联网企业们也更加的看重用户体验,要求7*24小时不停服提供服务,于是发布的方式也在演变,典型的发布方式包含蓝绿发布滚动发布灰度发布(金丝雀发布)。我们今天就来看看这些发布方式吧~

·蓝绿发布

在蓝绿发布中,部署服务的机器包含绿组机器、蓝组机器。在新版本上线之前,先将旧版本的代码部署在绿组机器上,然后把流量指向绿组机器,之后再把新版本代码部署在蓝组机器上,把指向绿组机器的流量再指回蓝组,发布过程如果出现问题,则回滚绿组机器或蓝组机器即可。在整个发布过程中,应用一直在对外提供服务,因此用户是无感的。蓝绿发布的缺点就是资源会有点浪费,在开始发布之前,需要申请出等量的机器进行服务部署。

比如我们去餐馆吃饭,点了红烧排骨、土豆牛腩、西红柿蛋汤,先上了红烧排骨。在上新的菜土豆牛腩时,传统发布是直接把红烧排骨下掉,换上土豆牛腩。蓝绿发布则是保留红烧排骨,并同时把土豆牛腩端上来,让我们都去吃土豆牛腩的同时,再把红烧排骨下掉。在整个就餐的过程中,蓝绿方式让我们一直保持有菜可吃。

·滚动发布

在滚动发布过程中,我们是把原有部署服务的机器挑选出来1台或多台机器在这些机器上部署新的版本,部署成功后,又挑剩下的机器继续部署新版本,如此循环往复,直到所有的机器都部署了最新的版本。这种部署方式的好处首先是不需要申请新的服务资源、节省成本,其次是在发布过程中并非所有的用户都会受影响、一定程度保障了用户体验。但是也存在一些缺点,如果发布过程出现了问题,回滚很麻烦,要逐台找到机器并且回滚。

滚动发布的方式就像是我们在餐馆吃饭时,上了红烧排骨之后、又上土豆牛腩、西红柿蛋汤,在整个上菜的过程中,有的人吃到的是红烧排骨,有的人是土豆牛腩,直到服务员确认所有的土豆牛腩都上齐后,才会把红烧排骨下掉。如果服务员上错菜了,那就呵呵了,需要去找到上错菜的桌子,一盘盘的撤下,用户会很莫名其妙,服务员也会很辛苦。

·灰度发布

灰度发布也称为金丝雀发布,是在互联网中比较常用的一种发布方式,尤其是C端产品。ABtest就是一种灰度发布方式,在新产品上线之后,让一部分用户用A,剩下的用户用B,如果用户对A没有什么反对意见,则把剩下的用户都切换A版本。

在灰度发布中,我们先把要发布的代码版本准备好,然后选择一台或一组服务器,切除掉流量(在负载均衡中把该台或该组机器去掉),在该组机器部署新的版本,然后再在负载均衡中把该台或该组机器加上,这时候就会有用户访问了,如果用户使用都还不错,则把剩下的机器按照刚刚的流程进行操作即可,直到线上的所有服务都是使用新版本。

灰度发布的方式就像是我们在餐馆吃饭时,上了红烧排骨之后,服务员先选择某几桌用户把红烧排骨下掉、上土豆牛腩看看用户反馈,如果都吃的还不错,就把剩下的所有餐桌的红烧排骨下掉、换成土豆牛腩。

事实上,蓝绿发布、滚动发布、灰度发布本质上还是一种部署行为,只不过是由于业务增加了对外周知用户的环节,因此变成了发布。从部署这个角度看,它们不仅是在生产环境可用,在测试环境也可以使用。再从DevOps持续集成交付角度看,开发的代码不断集成到代码库,也需要不断的部署在测试环境、生产环境中,因此它们仍然发挥着最大的价值。作为技术人员,可结合自己的企业情况,选择最合适的发布策略~

为何互联网大厂都在采用蓝绿发布、滚动发布、灰度发布?相关推荐

  1. 即便大厂裁员消息满天飞,但多数互联网大厂都是采用 N+1 补偿

    现在天天都能看到裁员消息,就连小厂裁员也都毫不留情,也难怪招聘市场看起来这么"畸形". 不过,大环境如此,我们无力改变.只能选择自己乐观起来,化焦虑为动力,精进自己专业技能,这样抵 ...

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

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

  3. 互联网一二线大厂名单_为什么字节跳动、阿里巴巴、腾讯等互联网大厂都喜欢拿金融牌照...

    前言 据说字节跳动也开始坐实了一张第三方支付牌照,感觉第三方支付牌照目前对于互联网大厂而言,基本上已经是标配了.除去第三方支付牌照,小贷.消费金融.银行.保险经纪和基金销售等等一系列金融相关的一线或二 ...

  4. 8分钟带你入门人工智能,互联网大厂都在用的高能AI算法

    哈喽,大家好,我是 Jack. 不少小伙伴问我,互联网大厂都在用哪些算法?有哪些算法值得学习? 这次,我做了一个视频,又剪了两周多,速度有点慢,但内容绝对充实. 主要是盘点一些互联网巨头,都在使用的人 ...

  5. DNSPod十问黄欢:为什么互联网大厂都要去造车?

    荆虹科技创始人,3D TOF视觉领域专家,六西格玛黑带大师,天津大学工业工程硕士.曾就职于台湾扬信与盛泰光学,领导并服务过Moto.Nokia.苹果手机摄像头项目. 人称奶罩,腾讯云中小企业中心总经理 ...

  6. 昨天愚人节,互联网大厂都恶搞了啥?

    作者 | 阿木&伍杏玲 出品 | CSDN(ID:CSDNnews) StackOverflow"被黑"了? 昨天阿木刚到公司,按照惯例先打开电脑浏览下StackOverf ...

  7. 太全了,一线互联网大厂都在用的Android UI框架完全解析,拿去吧你

    在学习Android过程中,会使用到很多UI框架,而使用时对框架的实现方式应有一定的了解,这个过程最好的方式就是阅读源码,学习大厂的使用方法.但UI框架很多,不时会有新的出现,而且对一些通用框架来说, ...

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

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

  9. 最近互联网大厂都在裁员?对普通程序员有什么启示?

    今天看到一篇文章,很多观点和我不谋而合,给大家分享一下,原作者知乎当时明月在,原文链接:https://www.zhihu.com/question/524779704/answer/24406140 ...

最新文章

  1. 高性能HTTP加速器varnish实践
  2. 轴固定位置_3轴、3+2轴、5轴加工都有哪些区别?这篇文章给你整明白
  3. 【机器视觉】 measure_pos算子
  4. 实现.Net程序中OpenTracing采样和上报配置的自动更新
  5. Android camera开发(11)---Camera软件架构
  6. 《MPLS在Cisco IOS上的配置》一第 1 章 MPLS概述1.1 IP转发过程概述
  7. so文件动态加载注意事项
  8. EF架构~DefaultValue让我的UnitOfWork更可读
  9. android 自定义pickerview,Simple PickerView for Android - 这是一个高仿 IOS PickerView 控件的库...
  10. JavaScript 实现页面跳转的几种方式
  11. 服务器系统如何卸载IE,如何卸载ie浏览器,我来教您如何卸载ie浏览器的步骤
  12. 计算机图形学 参数曲线和曲面的相关知识点
  13. 【围棋棋盘绘制——html实现】
  14. 贴片电容COG、NPO、X7R、Y5V、X5R介质的区别
  15. 安全系统工程徐志胜电子版_安全系统工程-第3版
  16. 企业运维容器之 docker 安全
  17. 零基础如何学 Web 前端开发
  18. 紫外可见分光光度计 | 探索光的工具 | 详解
  19. 树莓派教程 - 1.5 树莓派GPIO库wiringPi 使用硬件串口ttyAMA0与ttyS0
  20. 微信-微信退款(三)

热门文章

  1. Java版流媒体编解码和图像处理(JavaCPP+FFmpeg)
  2. Java面试---自我介绍
  3. vc++按钮应用大全
  4. 基于链接预测和卷积学习的Web服务网络嵌入
  5. 推荐销售必学——高效寻找客户的渠道和方法
  6. SwiftUI 中的水平条形图
  7. 华硕x45vd安装黑苹果Yosemite 10.10.3记录
  8. animation unity 速度_animator下怎么控制指定动画的播放速度
  9. android WebView清除缓存
  10. 2022山东省安全员C证考试题模拟考试题库及模拟考试