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


    蓝绿部署

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

    简单来说,你需要准备两个相同的环境(基础架构),在蓝色环境运行当前生产环境中的应用,也就是旧版本应用,如图中 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 体验:)

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

  • 相关阅读:
    diary and html 文本颜色编辑,行距和其它编辑总汇
    bash coding to changeNames
    virtualbox ubuntu 网络连接 以及 连接 secureCRT
    linux 学习6 软件包安装
    linux 学习8 权限管理
    vim 使用2 转载 为了打开方便
    ubuntu
    linux 学习15 16 启动管理,备份和恢复
    linux 学习 14 日志管理
    linux 学习 13 系统管理
  • 原文地址:https://www.cnblogs.com/vesaa/p/8085190.html
Copyright © 2020-2023  润新知