微服务下必须了解的4种部署策略!

企业AI Agent的容器化微服务部署策略 本文详细探讨了企业AI Agent的容器化微服务部署策略,从背景、核心概念、算法原理、系统架构设计、项目实战到最佳实践,全面分析了企业AI Agent容器化微服务部署的关键点。通过本文的讲解,读者可以深入了解企业AI Agent的容器化微服务部署的理论基础和实践方法。 阅读详情

点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 

来源:cnblogs.com/Courage129

/p/14498788.html


在项目迭代的过程中,不可避免需要”上线“。上线对应着部署,或者重新部署;部署对应着修改;修改则意味着风险。目前有很多部署发布的技术, 这儿将常见的做一个总结。

上面所说难免有些抽象, 举一个情景例子, 加入你是微博项目负责人员, 现在新版本较原来的老版本有很大的改变, 这设计到服务架构、前端UI等等, 经过测试功能没有障碍, 那么这时候如何让用户切换到新的版本呢?

显而易见, 第一次发布的应用是没有所谓的这个问题的, 这种如何发布的思考只会出现在后面的版本迭代中。

蓝绿发布

蓝绿部署中,一共有两套系统:一套是正在提供服务系统(也就是上面说的旧版),标记为“绿色”;另一套是准备发布的系统,标记为“蓝色”。两套系统都是功能完善的,并且正在运行的系统,只是系统版本和对外服务情况不同。正在对外提供服务的老系统是绿色系统,新部署的系统是蓝色系统。

0683da20fca8dd6c4dad8ac1af850ba6.png

蓝色系统不对外提供服务,用来做啥?

用来做发布前测试,测试过程中发现任何问题,可以直接在蓝色系统上修改,不干扰用户正在使用的系统。

蓝色系统经过反复的测试、修改、验证,确定达到上线标准之后,直接将用户切换到蓝色系统, 切换后的一段时间内,依旧是蓝绿两套系统并存,但是用户访问的已经是蓝色系统。这段时间内观察蓝色系统(新系统)工作状态,如果出现问题,直接切换回绿色系统。

当确信对外提供服务的蓝色系统工作正常,不对外提供服务的绿色系统已经不再需要的时候,蓝色系统正式成为对外提供服务系统,成为新的绿色系统。原先的绿色系统可以销毁,将资源释放出来,用于部署下一个蓝色系统。

蓝绿发布特点

  1. 蓝绿部署的目的是减少发布时的中断时间 、能够快速撤回发布 。

  2. 两套系统没有耦合的时候才能百分百保证不干扰

蓝绿发布注意事项

蓝绿部署只是上线策略中的一种,它不是可以应对所有情况的万能方案。蓝绿部署能够简单快捷实施的前提假设是目标系统是非常内聚的,如果目标系统相当复杂,那么如何切换、两套系统的数据是否需要以及如何同步等,都需要仔细考虑。

当你切换到蓝色环境时,需要妥当处理未完成的业务和新的业务。如果你的数据库后端无法处理,会是一个比较麻烦的问题;

  • 可能会出现需要同时处理“微服务架构应用”和“传统架构应用”的情况,如果在蓝绿部署中协调不好这两者,还是有可能会导致服务停止。

  • 需要提前考虑数据库与应用部署同步迁移 /回滚的问题。

  • 蓝绿部署需要有基础设施支持。

  • 在非隔离基础架构( VM 、 Docker 等)上执行蓝绿部署,蓝色环境和绿色环境有被摧毁的风险。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

滚动发布

一般是取出一个或者多个服务器停止服务,执行更新,并重新将其投入使用。周而复始,直到集群中所有的实例都更新成新版本。

deb28607a7f0c49698a2dcc183ea60bf.png

发布流程:

相对于蓝绿发布需要一套完备的机器不同, 滚动发布只需要一台机器(这儿这是为了理解, 实际可能是多台), 我们只需要将部分功能部署在这台机器上, 然后去替换正在运行的机器, 如上图, 将更新后的功能部署在Server1 上, 然后Server1去替换正在运行的Server, 替换下来的物理机又可以继续部署Server2的新版本, 然后去替换正在工作的Server2 , 以此类推, 直到替换完所有的服务器, 至此 ,服务更新完成。

滚动发布特点

  1. 这种部署方式相对于蓝绿部署,更加节约资源——它不需要运行两个集群、两倍的实例数。我们可以部分部署,例如每次只取出集群的20%进行升级。

  2. 回滚困难

滚定发布注意事项

  1. 滚动发布没有一个确定可行的环境。使用蓝绿部署,我们能够清晰地知道老版本是可行的,而使用滚动发布,我们无法确定。

  2. 修改了现有的环境。

  3. 回滚困难 。举个例子,在某一次发布中,我们需要更新100个实例,每次更新10个实例,每次部署需要5分钟。当滚动发布到第80个实例时,发现了问题,需要回滚,这个回滚却是一个痛苦,并且漫长的过程。

  4. 有的时候,我们还可能对系统进行动态伸缩,如果部署期间,系统自动扩容/缩容了,我们还需判断到底哪个节点使用的是哪个代码。尽管有一些自动化的运维工具,但是依然令人心惊胆战。

  5. 因为是逐步更新,那么我们在上线代码的时候,就会短暂出现新老版本不一致的情况,如果对上线要求较高的场景,那么就需要考虑如何做好兼容的问题。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

灰度发布

灰度发布, 也叫金丝雀发布。是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度,而我们平常所说的金丝雀部署也就是灰度发布的一种方式。

具体到服务器上, 实际操作中还可以做更多控制,譬如说,给最初更新的10台服务器设置较低的权重、控制发送给这10台服务器的请求数,然后逐渐提高权重、增加请求数。一种平滑过渡的思路, 这个控制叫做“流量切分”。

17世纪,英国矿井工人发现,金丝雀对瓦斯这种气体十分敏感。空气中哪怕有极其微量的瓦斯,金丝雀也会停止歌唱;而当瓦斯含量超过一定限度时,虽然鲁钝的人类毫无察觉,金丝雀却早已毒发身亡。当时在采矿设备相对简陋的条件下,工人们每次下井都会带上一只金丝雀作为“瓦斯检测指标”,以便在危险状况下紧急撤离。

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

  2. 将“金丝雀”服务器部署进服务器中, 测试。

  3. 从负载均衡列表中移除掉“金丝雀”服务器。

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

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

  6. 将“金丝雀”服务器重新添加到负载均衡列表中(连通性和健康检查)。

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

A/B测试

A/B测试和蓝绿发布、滚动发布以及金丝雀发布,完全是两回事。

蓝绿发布、滚动发布和金丝雀是发布策略,目标是确保新上线的系统稳定,关注的是新系统的BUG、隐患。

A/B测试是效果测试,同一时间有多个版本的服务对外服务,这些服务都是经过足够测试,达到了上线标准的服务,有差异但是没有新旧之分(它们上线时可能采用了蓝绿部署的方式)。

A/B测试关注的是不同版本的服务的实际效果,譬如说转化率、订单情况等。

A/B测试时,线上同时运行多个版本的服务,这些服务通常会有一些体验上的差异,譬如说页面样式、颜色、操作流程不同。相关人员通过分析各个版本服务的实际效果,选出效果最好的版本。bbc4e88279bcebd24f0adb44247bf9e9.png



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

384523d5c56bd47bf38f3f70fc2c3810.png

已在知识星球更新源码解析如下:

57c27752d62fb06bf235077ebad8a190.jpeg

e383221f22ecda9650006dd84ceee7a3.jpeg

4bd0e2d9e549cff6f064bdd83ec8ce89.jpeg

e0eab754d9a7cf5700e7830a8a6603dd.jpeg

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)

相关推荐

SLG大地图实战:从Tilemap到Shader的地表渲染与数据分层架构

本文深入探讨了SLG大地图开发中的关键技术挑战与解决方案,包括Tilemap系统的深度改造、地表渲染的Shader优化以及数据分层架构设计。通过实战案例,展示了如何实现视觉表现丰富、性能开销可控的SLG大地图,特别适合Unity开发者和游戏技术美术参考。

weixin_28693309的博客 523

深入解析消息队列:原理、应用与可靠性保障

在当今的分布式系统和大规模数据处理场景中,消息队列(MQ)扮演着至关重要的角色。它作为一种高效的异步通信机制,能够有效地解耦系统组件、提高系统的可扩展性和可靠性,同时在流量削峰、保证消息顺序等方面也发挥着重要作用。然而,不同的 MQ 系统有着各自独特的特点和适用场景,在使用过程中如何保证高可用性和消息的可靠传输也是至关重要的问题。本文将对 MQ 的使用原因、优缺点、常见 MQ 系统的区别、高可用性保证以及消息可靠传输等方面进行详细介绍和分析,帮助读者更好地理解和应用消息队列技术。

guihong004的博客 1559

海康VisionMaster零代码开发实战:从PLC工程师到视觉专家的捷径

本文为PLC工程师提供了利用海康VisionMaster视觉平台实现零代码视觉开发的实战指南。文章详细阐述了如何通过图形化流程设计替代传统编程,快速搭建视觉检测应用,并实现与PLC的无缝通讯,是工程师从设备控制迈向视觉系统集成的有效捷径。

weixin_29201859的博客 293

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

灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB Test 就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。灰度发布结构图滚动发布:一般是取出一个或者多个服务器停止服务,执行更新,并重新将其投入使用。周而复始,直到集群中所有的实例都更新成新版本。

細水、長流√的专栏 3209

Matlab2024a安装教程

点击【下一步】。8.选择解压后的【MATLAB R2024a(64bit)】文件夹中【Crack】文件夹下的【licese.lic】,点击【打开】。

qq_64359046的博客 4841

Frida Stalker实战:如何用指令级追踪破解OLLVM混淆的AES算法

本文深入探讨了如何使用Frida Stalker进行指令级追踪,破解经过OLLVM混淆的AES算法。通过动态分析技术,逆向工程师可以精准识别控制流平坦化等混淆手段,还原算法逻辑,特别适用于移动安全领域的加密算法分析。文章提供了详细的配置指南、核心机制解析和实战案例,帮助读者掌握对抗高级代码混淆的有效方法。

weixin_29325955的博客 477

RabbitMQ:三种发布确认详解

目的:保证在发送成功或者失败的情况下都能获取相关发送信息。 三种发布确认中: 单个确认为每发送一次消息就进行一次确认,优点是准确无误,缺点是资源占用较大,速度较慢; 代码: /** * 单个确认发布 * @throws Exception */ public static void publishMessageIndividually() throws Exception{ Channel channel = RabbitMqUtils.getChann

qq_49896962的博客 671

一、OpenSM 架构部署及原理详解

OpenSM 是 InfiniBand 网络的核心组件,通过自动化的拓扑发现、路由计算和状态维护,确保网络的高效运行。部署时需关注配置文件参数、路由算法选择和高可用性设计,调试时可借助日志和诊断工具快速定位问题。

jundao1997的专栏 1131

关于RabbitMq你必须深入理解的内容

关于RabbitMq你必须深入理解的内容前言这里主要想整理关于消息队列rabbitmq可能遇到问题,躺一躺其中的坑,然后在团队沉淀下来,最终变为整个团队的技术能力,然后写着写着发现,官方文档写的都比较详细也比较好,所以抽取一些比较有价值的链接和和整理一些实际上遇到的问题和处理心得,所以这里分享出来,设计到的链接可能会相对较多。这里假设用户已经对rabbitmq有所了解,如果不了解,可以先按照这个方...

weixin_34068198的博客 1253

rk3576 适配摄像头 (mipi 五摄)

在RK3576上实现五路CSI摄像头方案,核心思路是充分复用其视频输入接口,并通过巧妙的软件配置来实现。

weixin_35723192的博客 184

Spring Boot Jar包加密实战:用ClassFinal与Jasypt打造代码安全堡垒

Spring Boot代码加密与配置保护方案 针对Spring Boot项目源码和配置易被反编译的风险,本文提出ClassFinal字节码加密+Jasypt配置加密的组合方案。ClassFinal通过Maven插件对核心代码加密,运行时需JavaAgent加载,反编译后仅保留空方法体;Jasypt则采用强加密算法保护敏感配置。方案优势包括: 双重保护:ClassFinal加密业务逻辑,Jasypt加密数据库密码等配置 灵活部署:支持密码启动、机器绑定等安全策略 平滑集成:兼容Spring生态,动态解密结合配

墨夶的博客 1092

Pyroscope 部署模式完全指南:单进程(Monolithic)与微服务(Microservices)架构解析

Pyroscope 是 Grafana 旗下的连续性能分析平台(Continuous Profiling Platform),其核心目标是把性能问题定位到一行代码。在落地部署时,Pyroscope 提供了两种官方部署模式:**单进程 Monolithic 模式**与**微服务 Microservices 模式**,两者由 `-target` 参数统一驱动。本文以 [deployment-modes

gitblog_00164的博客 602

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

微服务的4种部署策略,你都清楚吗

微服务的4种部署策略,你都清楚吗

【可全包】本人程序员,不需要做任何吹嘘,只是实在写点程序,写点文档,熟悉各类主流框架,SSM,SpringBoot,Flask,Djiango,Mysql,Sqlite,VUE,Uniapp等,各类程序设计专家,优质作者 1084

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

弹性微服务的4种部署策略

四种策略 与传统架构相比,使用微服务构建应用程序可为开发人员提供更高的速度和敏捷性。但是,每次代码更改仍会招致风险,如果未发现和解决代码质量问题,则为潜在的失败奠定了基础。为了减轻这些风险,应用程序团队应实施现代的云原生路由策略,以使其更易于测试危险并确保应用程序已真正准备好在生产环境中部署。 以下四种部署策略使用路由技术来安全地引入新服务和功能,测试功能并进行迭代改进,识别和消除漏洞等等。这些方法共同构成了一个虚拟工具箱,应用程序团队可以使用这些工具来降低在开发和部署微服务驱动的应用程序期..

dragontesting123的博客 1225

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

3分钟上手微服务部署:Google microservices-demo Helm Chart实战指南

你是否还在为微服务部署的复杂性而头疼?配置零散、依赖繁琐、版本混乱——这些问题往往让开发者在部署环节耗费大量精力。本文将以Google开源的[microservices-demo](https://link.gitcode.com/i/5ee4f19c562a98443fa35712f948e335)项目为例,带你通过Helm Chart实现微服务的一键部署,从环境准备到应用访问全程只需3分钟。读...

gitblog_00611的博客 424

如何部署Microservices Event Sourcing?完整部署指南与环境配置

Microservices Event Sourcing是一个基于Spring Cloud的微服务架构在线购物平台,采用了事件溯源和CQRS架构模式,提供了构建端到端微服务的最佳实践。本文将为您提供完整的部署指南和环境配置步骤,帮助您快速搭建这个强大的微服务系统。 ## 🚀 系统架构概览 Microservices Event Sourcing采用三层架构设计,包含11个独立的微服务组件,确

gitblog_00529的博客 951

GoogleCloudPlatform/microservices-demo:Google官方微服务架构实战指南

你是否曾面临这样的困境?当业务快速发展时,单体应用变得臃肿不堪,部署困难、扩展性差、技术栈升级风险高。微服务架构看似美好,但实际落地却面临服务拆分、通信协议、部署运维、监控追踪等一系列复杂问题。 Google Cloud Platform的microservices-demo项目正是为了解决这些痛点而生。这个开源项目不仅展示了现代化的微服务架构实现,更提供了从开发到部署的完整解决方案,让你能够快...

gitblog_00872的博客 994
上一篇: 在这个大环境下,我是如何找工作的
下一篇: 公司新来一个同事,把枚举运用得炉火纯青...
公众号-芋道源码
博客等级 码龄10年 1634粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值