Redian新闻
>
微服务的4种部署策略,你都清楚吗?

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

公众号新闻

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

管她前浪,还是后浪?

能浪的浪,才是好浪!

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

源码精品专栏

 

来源:cnblogs.com/Courage129

/p/14498788.html


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

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

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

蓝绿发布

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

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

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

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

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

蓝绿发布特点

  1. 蓝绿部署的目的是减少发布时的中断时间能够快速撤回发布
  2. 两套系统没有耦合的时候才能百分百保证不干扰

蓝绿发布注意事项

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

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

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

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

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

滚动发布

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

发布流程:

相对于蓝绿发布需要一套完备的机器不同, 滚动发布只需要一台机器(这儿这是为了理解, 实际可能是多台), 我们只需要将部分功能部署在这台机器上, 然后去替换正在运行的机器, 如上图, 将更新后的功能部署在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世纪,英国矿井工人发现,金丝雀对瓦斯这种气体十分敏感。空气中哪怕有极其微量的瓦斯,金丝雀也会停止歌唱;而当瓦斯含量超过一定限度时,虽然鲁钝的人类毫无察觉,金丝雀却早已毒发身亡。当时在采矿设备相对简陋的条件下,工人们每次下井都会带上一只金丝雀作为“瓦斯检测指标”,以便在危险状况下紧急撤离。

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

A/B测试

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

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

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

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

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



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

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

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

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

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

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
只会用 Spring Boot 创建微服务?那你就 OUT 了,还有这 4 种替代方案!从微服务转为单体架构、成本降低 90%!是的,你没看反!【健康】催人老的4种饮食,常吃太可怕了!离岸人民币、在岸人民币和人民币中间价的区别,你真分清楚吗?字节跳动微服务架构下的高性能优化实践JECloud 基于微服务架构的低代码平台夜间高血压的诊断和治疗,这些你都清楚吗?LinkedIn采用协议缓冲区进行微服务集成,将延迟降低了60%微服务架构中的数据一致性:解决方案与实践每天被工作挤压变形的苦,这位社畜嘴替大师比任何人都清楚!寂寞梧桐深院心像我希望在系统设计面试之前知道的 12 种微服务模式美国房产转给子女的4种方式,哪种更省税?《月光恋》&《情人锁》主流微服务全链路监控系统实战调整生活状态的4种方法帮你远离内耗的4种方法SOFAServerless 应用架构助力业务10倍效率提升,探索微服务隔离与共享的新平衡|QCon从合伙人晋升看律所:内生式人才策略,是必然选择吗?最赚钱的4种基金,你为什么总是错过?《挖呀挖》,小黄老师为什么会红?孩子在幼儿园过得好不好?4种话术问老师/孩子,答案清清楚楚!林昭的话比张志新的好听;木心的话比陈丹青的好听;毛主席的话比习席的好听;马英九来了,大陆炸了:瞧人家的样子,说话,写字!高情商人群的4种好习惯最新消息传来!瓦格纳车队疑向俄方进发,白俄特种部队出手?坠机事件疑点重重,传出两具尸体消失2024er,你对美本网申系统都清楚吗?有效应对分歧的三种策略,你一定要学会最伤孩子的4种“中国式礼貌”,第一条很多家长都中了……孩子的4种“讨厌”行为,暗藏对妈妈深深的爱,但常被拒绝每天被工作挤压变形的苦,卡夫卡比任何人都清楚长肉“最猛”的4种主食,米饭馒头上不了榜,你可能天天都在吃!微服务下必须了解的4种部署策略!5 种主流微服务注册中心技术选型,yyds!【健康】催人老的4种饮食,常吃太可怕了!两道抗衰老的食疗方
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。