网易首页 > 网易号 > 正文 申请入驻

面试官问:微服务的4种部署策略有哪些,什么区别?

0
分享至

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

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

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

蓝绿发布

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

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

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

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

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

蓝绿发布特点

蓝绿部署的目的是减少发布时的中断时间、能够快速撤回发布。两套系统没有耦合的时候才能百分百保证不干扰。关于更多面试题,公众号Java精选,回复java面试,获取在线面试资料,支持随时随地刷题。

蓝绿发布注意事项

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

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


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



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



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



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


滚动发布

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

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

滚动发布特点

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

滚定发布注意事项


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



  2. 修改了现有的环境。



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



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



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


灰度发布

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

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

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

过程:

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

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

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

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

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

  6. 将“金丝雀”服务器重新添加到负载均衡列表中(连通性和健康检查)。如果“金丝雀”在线使用测试成功,升级剩余的其他服务器。(否则就回滚)

A/B测试

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

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

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

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

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

作者:Courage129 https://www.cnblogs.com/Courage129/p/14498788.html

公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!

最近有很多人问,有没有读者交流群!加入方式很简单,公众号Java精选,回复“加群”,即可入群!

(微信小程序):3000+道面试题,包含Java基础、并发、JVM、线程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架构设计等,在线随时刷题!

特别推荐:专注分享最前沿的技术与资讯,为弯道超车做好准备及各种开源项目与高效率软件的公众号,「大咖笔记」,专注挖掘好东西,非常值得大家关注。点击下方公众号卡片关注

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

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
C罗:曾经最仰赖的超级身体正无情背叛他

C罗:曾经最仰赖的超级身体正无情背叛他

林子说事
2024-06-18 07:30:03
外媒:巴勒斯坦政府拟在以军撤离后接管拉法口岸

外媒:巴勒斯坦政府拟在以军撤离后接管拉法口岸

参考消息
2024-06-14 17:26:13
李帅:很高兴拿下胜利作为生日礼物,海港八连胜不会是终点

李帅:很高兴拿下胜利作为生日礼物,海港八连胜不会是终点

懂球帝
2024-06-18 23:25:09
突然换帅!正式决定退出CBA!中国男篮又一个新时代开启……

突然换帅!正式决定退出CBA!中国男篮又一个新时代开启……

篮球实战宝典
2024-06-09 18:02:40
笑麻了!江苏酒厂慰问姜萍父亲送了俩大铁牛上热搜,笑死在评论区

笑麻了!江苏酒厂慰问姜萍父亲送了俩大铁牛上热搜,笑死在评论区

娱乐帝皇丸
2024-06-17 20:54:06
彻底倒向美囯?拒绝中方移民,驱离中方工人,中方大怒:永不合作

彻底倒向美囯?拒绝中方移民,驱离中方工人,中方大怒:永不合作

星辰故事屋
2024-04-27 19:04:44
姆巴佩鼻梁骨折!赛后放话只说了4个字,皇马球迷:球王心态超好

姆巴佩鼻梁骨折!赛后放话只说了4个字,皇马球迷:球王心态超好

贝塔说体育
2024-06-18 13:08:50
凯尔特人王朝计划:塔图姆5年3亿续约,怀特签1.26亿,交易两内线

凯尔特人王朝计划:塔图姆5年3亿续约,怀特签1.26亿,交易两内线

元爸体育
2024-06-18 17:36:48
1948年毛主席交待王建安:如果失街亭,先斩许世友,再打你40军棍

1948年毛主席交待王建安:如果失街亭,先斩许世友,再打你40军棍

帝哥说史
2024-06-18 17:01:44
“70后”女厅官任上落马!上周还在主持讲座

“70后”女厅官任上落马!上周还在主持讲座

上观新闻
2024-06-17 16:40:26
学会了!吉林男子趁着女朋友上厕所时求婚:不答应也得答应

学会了!吉林男子趁着女朋友上厕所时求婚:不答应也得答应

唐小糖说情感
2024-06-18 17:33:33
新娘婚礼上播放AI复原已故婆婆影像:当晚爱人反复看视频 仿佛母亲“看到”他结婚了

新娘婚礼上播放AI复原已故婆婆影像:当晚爱人反复看视频 仿佛母亲“看到”他结婚了

极目新闻
2024-06-16 13:41:50
今日起广州交警公布新增2套电子警察,具体位置如下

今日起广州交警公布新增2套电子警察,具体位置如下

广州交通电台
2024-06-18 18:35:44
沈阳地头蛇看上加代媳妇,趁拍戏对她侵犯,加代用尽力量复仇杀红眼

沈阳地头蛇看上加代媳妇,趁拍戏对她侵犯,加代用尽力量复仇杀红眼

古今档案
2024-05-20 16:03:56
TA:巴萨目前有9名球员无法注册,需在月底前找1亿多欧元平衡账目

TA:巴萨目前有9名球员无法注册,需在月底前找1亿多欧元平衡账目

直播吧
2024-06-18 15:36:16
冯玉军教授:怎么理解俄罗斯和中俄关系?

冯玉军教授:怎么理解俄罗斯和中俄关系?

长平投研
2024-05-13 12:02:20
千万别去意大利!一天被偷3次,到处衣不蔽体,炸药能过安检

千万别去意大利!一天被偷3次,到处衣不蔽体,炸药能过安检

青栀伊人
2024-06-17 22:04:27
经济下行时谁在闷声发大财?日本房地产泡沫破裂后这些行业迅速兴起

经济下行时谁在闷声发大财?日本房地产泡沫破裂后这些行业迅速兴起

日本物语
2024-06-16 20:39:24
男人一天最多做几次?连续发射的危害你知道吗?

男人一天最多做几次?连续发射的危害你知道吗?

桃小夭
2024-06-17 08:56:59
这是欧洲杯的卫冕冠军吗?四年时间意大利彻底平民化

这是欧洲杯的卫冕冠军吗?四年时间意大利彻底平民化

百里无心
2024-06-16 10:42:39
2024-06-19 01:12:49
Java精选
Java精选
一场永远也演不完的戏
1551文章数 3855关注度
往期回顾 全部

头条要闻

土耳其率先破门 1-0领先格鲁吉亚 穆尔杜世界波

头条要闻

土耳其率先破门 1-0领先格鲁吉亚 穆尔杜世界波

体育要闻

对于凯尔特人来说 谁是MVP根本不重要

娱乐要闻

被曝新恋情,张碧晨王琳凯发声辟谣

财经要闻

官方:税务部门没有倒查30年的安排

科技要闻

第一批小米车主,已经开始卖车了

汽车要闻

全球最低价 现代IONIQ 5N预售价39.88万

态度原创

教育
游戏
旅游
艺术
公开课

教育要闻

高考志愿填报,这些误区你应该知道

《艾尔登法环》DLC GS10分:新物品为游戏注入活力

旅游要闻

直航加免签,利好中国—古巴旅游往来

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版