线上服务要咋切换版本才不会影响用户?

2020-07-31 10:58:29 +08:00
 x97bgt

有若服务,每个服务都有集群,直接相互配合才能提供对外服务。假设若干服务要一起升级新版本,要咋起部署才能平滑升级,不影响线上?

面试时遇到的问题,没答出来。。。

8138 次点击
所在节点    程序员
52 条回复
luckyrayyy
2020-07-31 14:34:37 +08:00
先把新服务的整个链条依次起来,然一点一点的切流量过去。
jaylee4869
2020-07-31 15:01:12 +08:00
K8s 滚动升级。
594duck
2020-07-31 15:01:17 +08:00
@sadfQED2 你这叫滚动升级,前期准备表稍大一点就是按天算了。特色 facebook 曾经 不是按月算了么。总工时都不省,另外要考虑的问题会更多。
594duck
2020-07-31 15:01:35 +08:00
@jaylee4869 K8s 能够滚数据库么
594duck
2020-07-31 15:11:12 +08:00
@Dabaicong 单表 1 亿,原生 online ddl 加字段,还秒加,从库还不卡。求大神介绍经验,我们虚心听讲。
594duck
2020-07-31 15:11:48 +08:00
@Umenezumi #20 楼有亿级库秒加字段,我正在学习我们一起听听。
wangritian
2020-07-31 15:14:26 +08:00
@x97bgt 大概算是更复杂的负载均衡吧,istio 的虚拟服务可以控制流量
privil
2020-07-31 15:25:35 +08:00
@Dabaicong #20 您家的 mysql 太厉害了……
@594duck #25 反正 mysql 肯定不行 TiDB 貌似可以
Garland
2020-07-31 15:29:22 +08:00
拓扑排序
winglight2016
2020-07-31 15:56:11 +08:00
面试不仅仅是回答问题还要精通问问题:
1.要问,是否可以增加服务器 /容器数量?可以的话,那就简单了,当作重新部署,完事儿了,nginx 切过去
2.要问,是否需要同时支持旧版本?
3.要问,什么叫平滑,什么叫不影响线上?是说,无人值守,一键切换,还是说,如果有 bug,自动回滚?不影响是说,半夜无访问量时可以停机一小时,还是年故障时间不超过一小时?
4.服务依赖关系是否手动管理?还是自动拉起部署?

恰当的问题,有时候会直接带出答案。答不出来的时候反问回去,问到他觉得你其实啥都不懂,或者你找到答案。
bonfy
2020-07-31 16:01:40 +08:00
估计是想说 灰度发布 先切百分之几 然后慢慢切

但是 实际操作么,估计还是半夜一把梭
594duck
2020-07-31 16:01:50 +08:00
@privil TIDB 这东西,我是抱着怀疑态度的。

我见过可以的有 oracle,microsoft sqlserver 。
bagheer
2020-07-31 16:02:29 +08:00
MySQL 的话,版本 8,新增了一个 instant add column
nwsmhz
2020-07-31 16:03:47 +08:00
otakustay
2020-07-31 16:17:13 +08:00
线下先布一整套完整的,然后入口切?
opengps
2020-07-31 16:19:29 +08:00
如果是云服务器集群,那么步骤是:
从伸缩组(集群)移除一部分机器,
升级这部分机器,
然后移回这部分机器,
然后移除其他机器
然后移回这些机器
(建议进行多轮,而不是举例中的 2 轮)
opengps
2020-07-31 16:20:42 +08:00
如果是不兼容升级,则不得不停机了,一半会都要求兼容开发新接口,保留老接口可用,毕竟 app 之类的不想浏览器那么好控制(开闭原则)
opengps
2020-07-31 16:21:44 +08:00
一套大型系统,需要考虑的问题很多,本帖下的所有回复仅仅是参考,切勿硬套
godwinma
2020-07-31 16:39:49 +08:00
@wangxiaoaer 掘金牛逼
Actrace
2020-07-31 16:40:27 +08:00
需要平滑过渡的,一般都做增量更新。
比如 /api/v1/ /v2 这样更新,也不是所有接口都需要更新。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/694561

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX