【微服务从入门到精通】:(一)微服务的蓝绿发布及灰度发布

蓝绿部署

基本上,蓝绿部署是一种以可预测的方式发布应用的技术,目的是减少发布过程中服务停止的时间。

简单来说,你需要准备两个相同的环境(基础架构),在蓝色环境运行当前生产环境中的应用,也就是旧版本应用,如图中 App1 version1 、 App2 version1 、 App3 version3 。

当你想要升级 App2 到 version2 ,在蓝色环境中进行操作,即部署新版本应用,并进行测试。如果测试没问题,就可以把负载均衡器/反向代理/路由指向蓝色环境了。

随后你需要监测新版本应用,也就是 App2 version2 是否有故障和异常。如果运行良好,就可以删除 App2 version1 使用的资源。如果运行出现了问题,你可以通过负载均衡器指向快速回滚到绿色环境。

理论上听起来很棒,但还是要注意一些细节:

  • 当你切换到蓝色环境时,需要妥当处理未完成的业务和新的业务。如果你的数据库后端无法处理,会是一个比较麻烦的问题;
  • 有可能会出现需要同时处理“微服务架构应用”和“传统架构应用”的情况,如果在蓝绿部署中协调不好这两者,还是有可能导致服务停止的;
  • 需要提前考虑数据库与应用部署同步迁移 /回滚的问题;
  • 蓝绿部署需要有基础设施支持
  • 在非隔离基础架构( VM 、 Docker 等)上执行蓝绿部署,蓝色环境和绿色环境有被摧毁的风险

A/B Testing

A/B 测试跟蓝绿部署完全是两码事。

A/B 测试是用来测试应用功能表现的方法,例如可用性、受欢迎程度、可见性等等。 A/B 测试通常用在应用的前端上,不过当然需要后端来支持。

A/B 测试与蓝绿部署的区别在于, A/B 测试目的在于通过科学的实验设计、采样样本代表性、流量分割与小流量测试等方式来获得具有代表性的实验结论,并确信该结论在推广到全部流量可信;蓝绿部署的目的是安全稳定地发布新版本应用,并在必要时回滚。

A/B 测试和蓝绿部署可以同时使用。

灰度发布/金丝雀发布

灰度发布是在原有版本可用的情况下,同时部署一个新版本应用作为“金丝雀”(金丝雀对瓦斯极敏感,矿井工人携带金丝雀,以便及时发发现危险),测试新版本的性能和表现,以保障整体系统稳定的情况下,尽早发现、调整问题。

灰度发布/金丝雀发布由以下几个步骤组成:

  • 准备好部署各个阶段的工件,包括:构建工件,测试脚本,配置文件和部署清单文件。
  • 从负载均衡列表中移除掉“金丝雀”服务器。
  • 升级“金丝雀”应用(排掉原有流量并进行部署)。
  • 对应用进行自动化测试。
  • 将“金丝雀”服务器重新添加到负载均衡列表中(连通性和健康检查)。
  • 如果“金丝雀”在线使用测试成功,升级剩余的其他服务器。(否则就回滚)

总结

对于云计算来说,以上三种策略都是可用的。不难想象,通过 docker 和 kubernetes ,我们可以很简单的实现蓝绿部署、 A/B 测试、灰度发布……,深度整合 Docker 和 Kubernetes ,提供给用户包括代码滚动上线、一键代码回滚等功能和特性在内的强大的 CI/CD 体验:)

注:本文非原创。参考互联网博文,好文分享给大家

时间: 2024-11-08 11:53:26

【微服务从入门到精通】:(一)微服务的蓝绿发布及灰度发布的相关文章

喜迎新年《服务器硬件工程师从入门到精通》课程5折钜惠,大家可以下手啦!

大家好: <服务器硬件工程师从入门到精通>-基础篇,是<服务器硬件工程师从入门到精通>系列课程的第一篇,课程自发布以来,受到了大家的喜爱和欢迎.很多同学也通过51CTO学院的新课限量秒杀活动,购买到了课程,新课限量秒杀,是51CTO学院平台对于新发布课程的一个宣传推广,随着时间的推移,我们的课程售价已逐渐回归正常售价.时值新年来临之际,为了感谢大家的支持和厚爱,特申请推出迎新年限时折扣活动,课程5折优惠,喜欢本课程的同学,可以下手啦! 课程链接: http://edu.51cto.

服务器硬件工程师从入门到精通视频教程-基础篇发布了!

课程目标 了解服务器硬件的基本概念和分类方式,掌握服务器各个组成硬件的相关知识和技术,熟悉服务器硬件组装和软件安装流程,掌握常见品牌服务器主板的BIOS设置.固件更新以及板载RAID的配置方法,熟悉服务器操作系统和驱动程序的安装,掌握服务器远程管理功能的配置和使用,了解服务器硬件启动过程和常见硬件故障的排除. 适用人群 服务器硬件工程师.桌面支持工程师.系统运维工程师.系统集成工程师.网络管理员以及其它IT从业人员. 课程简介 一.为什么要制作<服务器硬件工程师从入门到精通>系列课程? 做为一

AG-Admin微服务框架入门

AG-Admin微服务框架入门  @qq群:一群: 837736451  二群 169824183 一 概要介绍 AG-Admin后台地址:https://gitee.com/minull/ace-security AG-Admin前端地址:https://gitee.com/minull/AG-Admin-v2.0 要想玩儿转spring cloud必须进行一大波儿的学习哦,先有个心理准备. AG-Admin基于Spring Cloud微服务化开发平台,具有统一授权.认证微服务云框架.其中包含

微服务(入门四):identityServer的简单使用(客户端授权)

IdentityServer简介(摘自Identity官网) IdentityServer是将符合规范的OpenID Connect和OAuth 2.0端点添加到任意ASP.NET核心应用程序的中间件,通常,您构建(或重新使用)一个包含登录和注销页面的应用程序(可能还包括同意,具体取决于您的需要),IdentityServer中间件向其添加必要的协议头,以便客户端应用程序可以使用这些标准协议与之对话. 托管应用程序可以像您希望的那样复杂,但我们通常建议通过只包含与身份验证相关的UI来尽可能地保持

Spring Cloud Alibaba微服务从入门到进阶 完整版

第1章 课程介绍课程的总体介绍,课程需要的环境搭建和一些常用的快捷键介绍. 第2章 Spring Boot基础前期先带着学习Spring Boot基础,创建Spring Boot项目,讲解Spring Boot的配置,是学习Spring Cloud Alibaba的必知必会. 第3章 微服务的拆分与编写这一章讲解的微服务的概念,使用场景,建模,架构通览,讲师带着拆分微服务并且一步步分析,编写一些基础的微服务功能 第4章 Spring Cloud Alibaba介绍学习Spring Cloud A

微服务开发攻略之浅析微服务架构

最近这些年,微服务非常火,那你有没想过微服务的动机是什么?其实,最重要的动机就是业务变化太快了.特别是移动互联网出现以后,各种各样的业务:共享单车.支付宝.微信支付等等,业务经历着飞速的变革与创新,所以就要求底层的应用技术能够支撑得上业务的快速变化.我们看一下应用架构的变迁,其实也是从另一个角度来印证上文说的"快". 第一代是单体架构,当然它有很多,例如紧耦合.封闭架构等各种各样的问题.第二代是SOA架构,可能大型企业级的应用里面会比较多,提供了很多种支持,实际上我们看到SOA架构的时

SpringCloud微服务:阿里开源组件Nacos,服务和配置管理

摘自:https://www.cnblogs.com/cicada-smile/p/12355994.html 源码地址:GitHub·点这里||GitEE·点这里 一.阿里微服务简介 1.基础描述 Alibaba-Cloud致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用微服务的必需组件,方便开发者通过SpringCloud编程模型轻松使用这些组件来开发分布式应用服务.只需要添加一些注解和少量配置,就可以将SpringCloud应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建

Re:从0开始的微服务架构--(二)快速快速体验微服务架构?--转

原文地址:https://mp.weixin.qq.com/s/QO1QDQWnjHZp8EvGDrxZvw 这是专题的第二篇文章,看看如何搭建一个简单模式的微服务架构. 记得好久之前看到一个大牛说过:如果单体架构都搞不好,就别搞微服务架构.乍一看,这句很有道理,后来发现这句话是不太对的,因为微服务架构的目的就是为了降低系统的复杂性,所以 微服务架构应该比单体架构更简单.更好实践才对. 这篇文章,我们就分享一下如何搭建一个 简单模式 的微服务架构. 什么是微服务架构的简单模式? 相对于大型互联网

微服务实践(五):微服务的事件驱动数据管理

[编者的话]本文是使用微服务创建应用系列的第五篇文章.第一篇文章介绍了微服务架构模式,并且讨论了使用微服务的优缺点:第二和第三篇描述了微服务架构模块间通讯的不同方面:第四篇研究了服务发现中的问题.本篇中,我们从另外一个角度研究一下微服务架构带来的分布式数据管理问题. 1.1 微服务和分布式数据管理问题 单体式应用一般都会有一个关系型数据库,由此带来的好处是应用可以使用 ACID transactions,可以带来一些重要的操作特性: 原子性 – 任何改变都是原子性的 一致性 – 数据库状态一直是