后端,大型的分布式系统下有啥好的依赖升级管理技术方案么?

2020-04-29 15:49:53 +08:00
cubecube  cubecube
面试的问题,大概率挂了。
我大概说了说
1. 在组织内部统一标准化化依赖的版本管理
2. 对核心依赖升级进行评估协调处理
3. 让被依赖的技术 or 业务模块保持向后兼容性
4. 部分模块的 API 使用可以做适配器保持系统内部逻辑的稳定性
5. 升级过程优化,保证服务有序关闭和平滑升级。

以上貌似都没 get 到面试官的点,一直被强调要考虑技术上怎么去处理该问题。
这种针对技术基础依赖和某些业务依赖的管理升级过程,这块技术上有啥好的方案么?
3038 次点击
所在节点   程序员  程序员
18 条回复
xuanbg
xuanbg
2020-04-29 15:56:34 +08:00
1 、没有新需求,绝不引人新依赖。
2 、新版本新项目新依赖,老版本老项目绝不升级依赖包。

庶几,可天下无事矣。
cubecube
cubecube
2020-04-29 15:59:17 +08:00
@xuanbg 面试这么答肯定不行啊。你看我说的统一标准化依赖管理,就是这个意思嘛
lst2008
lst2008
2020-04-29 15:59:52 +08:00
parent?
xuanbg
xuanbg
2020-04-29 16:11:37 +08:00
@cubecube 在工程上面,弄个模板复制粘贴最省事。别的都是浮云,毕竟依赖管理这个事情太复杂。面试的话,人家想知道的是你能不能说清楚这个事情的核心是什么、解决问题思路是什么。

依赖管理的核心就是包的版本,核心问题就是版本冲突。然后,你会发现这个问题是没有普适的完美解的,总有幺蛾子。所以大家就都只能因地制宜,每个项目各管各的。做统一的依赖管理那是吃力不讨好……
yuyu12
yuyu12
2020-04-29 16:12:18 +08:00
找下阿里 Pandora 的思路。
index90
index90
2020-04-29 16:25:34 +08:00
对于研发:
1. 有损服务
2. 接口兼容
3. 数据库兼容
对于部署:
1. 部署编排
2. 蓝绿部署
3. 金丝雀发布
Oktfolio
Oktfolio
2020-04-29 16:38:11 +08:00
@yuyu12 一个 StringUtils 都不下二十个包路径。
cubecube
cubecube
2020-04-29 16:42:16 +08:00
@yuyu12 我看了看,潘多拉的思路,还是基于 fatjar 这种固化依赖来弄的,感觉并没有解决因此升级的问题,就是不升级呗,可能我还是和面试官还是对于问题理解不一致吧
cubecube
cubecube
2020-04-29 16:43:30 +08:00
@index90 差不多吧,哈哈,我感觉这么答貌似也不行。面试官可能想我回答容器化依赖隔离
IMCA1024
IMCA1024
2020-04-29 17:49:27 +08:00
...emmm 太多名词不知道怎么说

直接问 什么问题,然后给出自己的解决方法。。
xizismile
xizismile
2020-04-29 18:08:06 +08:00
面试官可能想听的是 service mesh 方案
cubecube
cubecube
2020-04-29 18:39:27 +08:00
@xizismile 这个,国内有实施落地的么?感觉还在概念阶段呀
yuelang85
yuelang85
2020-04-29 18:48:58 +08:00
我第一个想法就是 docker 。。。。封装环境,回避依赖升级。如果真需要升级,就是模块级别
chihiro2014
chihiro2014
2020-04-29 19:00:54 +08:00
参考下 Service mesh,金丝雀发布确实是个不错的选择,将主要流量分给老系统,次要流量分给新系统,等新系统稳定了,再逐步升级上去。就算炸了,还能走以前的不是?
https://www.bilibili.com/video/BV17t411E7rV
CoderGeek
CoderGeek
2020-04-29 19:10:21 +08:00
想到向下兼容 - - 最近在搞这个问题 233
xizismile
xizismile
2020-04-29 19:21:38 +08:00
@cubecube 大厂像阿里啥的,应该都落地了吧,看看他们的技术分享、博客
luozic
2020-04-30 13:57:35 +08:00
cubecube
2020-04-30 17:29:51 +08:00
更新下,已挂。

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

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

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

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

© 2021 V2EX