Git学习笔记10

代码更新方法:

蓝绿部署:

蓝绿部署,英文名:Blue Green Deployment,是一种可以保证系统在不间断提供服务的情况下上线代码的部署方式。

如何保证系统不间断提供服务呢?

蓝绿部署的模型中包含两套集群。

在正常情况下(没有上线操作),集群A和集群B的代码版本是一致的,并且同时对外提供服务。

在有项目代码上线的时候,我们首先把一个集群(比如集群A)从负载列表中摘除,进行新版本的部署。集群B仍然继续提供服务。

当集群A升级完毕,我们把负载均衡重新指向集群A,再把集群B从负载列表中摘除,进行新版本的部署。集群A重新提供服务。

最后,当集群B也升级完成,我们把集群B也恢复到负载列表当中。这个时候,两个集群的版本都已经升级,并且对外的服务几乎没有间断过。

负载均衡是:挂一端,另外一端也要顶得住。

在用户比较少的情况下可以干这个事情。

先对一个Web服务器升级更新,再对另外一台服务器进行升级更新。

蓝绿部署是费钱,需要两套集群。

滚动更新:

滚动更新,**英文Rolling update,**同样是一种可以保证系统在不间断提供服务的情况下上线代码的部署方式。

和蓝绿部署不同的是,滚动部署对外提供服务的版本并不是非此即彼,而是在更细的粒度下平滑完成版本的升级。

如何做到细粒度平滑升级版本呢?

1台1台地进行升级、或者2台2台地进行升级、或者4台4台进行升级......或者某几台分批进行升级。

最终所有的节点都升级了版本。

容器升级很快。

第2个容器(新的版本)很快替换第1个容器。容器是轻量级的虚拟机。

蓝绿部署和滚动部署两者对比:

蓝绿部署:2套进行切换,最终实现升级的方式。切换是两者都要启动,然后负载均衡进行切换。

数据冲突的情况下,后台数据库也要进行升级。

整套升级,还是要容器方便。

滚动部署:快速地分批次升级,最终达到全部升级的目的。

在容器平台比较容易实现。

灰度发布(A/B测试,金丝雀部署

灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。

AB test就是一种灰度发布方式,**让一部分用户继续用A,一部分用户开始用B,**如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。

游戏公司的内测体验。

政府政策试点。

灰度发布可以保证整体系统的稳定,**在初始灰度的时候就可以发现、调整问题,以保证其影响度,**而我们平常所说的金丝雀部署也就是灰度发布的一种方式。

比较平滑,保证整体的稳定。及时发现和调整问题。

金丝雀:试点。

灰度发布/金丝雀部署步骤:

  1. 准备好部署各个阶段的工件,包括:构建工件,测试脚本,配置文件和部署清单文件。

  2. 从负载均衡列表中移除掉"金丝雀"服务器。(把权重调为0,新的请求就不找你,老的流量会断。)

  3. 升级"金丝雀"应用(排掉原有流量并进行部署)。

  4. 对应用进行自动化测试。

  5. 将"金丝雀"服务器重新添加到负载均衡列表中(连通性和健康检查)。(把权重改为原来的值。)

  6. 如果"金丝雀"在线使用测试成功,升级剩余的其他服务器。(否则就回滚

除此之外灰度发布还可以设置路由权重,动态调整不同的权重来进行新老版本的验证。

滚动更新:在容器中比较容易实现。

相关推荐
递归不收敛1 小时前
专属虚拟环境:Hugging Face数据集批量下载(无登录+国内加速)完整指南
人工智能·笔记·git·python·学习·pycharm
退役小学生呀5 小时前
二十二、DevOps:基于Tekton的云原生平台落地(三)
linux·云原生·容器·kubernetes·k8s·devops·tekton
inx17713 小时前
Git 分布式版本控制快速入门|掌握核心命令与实用技巧
git
用户120391129472613 小时前
从零开始掌握Git:告别版本管理混乱,轻松驾驭代码人生
git
Vallelonga14 小时前
Git 标准工作流程和 Git 使用(持续更新)
经验分享·git
MYPM_AndyLiu1 天前
软件测试和DevOps的关系
软件测试·devops·testops·测试左右移
l1t1 天前
在Lua用luasql-sqlite3库访问SQLite数据库
数据库·git·sqlite·lua
熙客1 天前
Gitee:代码管理
gitee·devops·源代码管理
wa的一声哭了1 天前
Mac os安装Easyconnect卡在正在验证软件包
运维·服务器·git·macos·eclipse·github·mac