如何对服务依赖进行排序?(多服务, 多依赖)

2020-09-23 18:30:01 +08:00
 jasonqiao36

一个 java 工程, 可能依赖多个其他的 java 服务,在进行发布的时候, 需要考虑依赖关系。

例如有 a~g, x~z 两组服务, 他们的依赖关系如下:

第一组:
x <--  y  // x 依赖 y

z <--  y  // z 依赖 y


第二组:

a <--  b     //a 依赖 b

c <--  b     // c 依赖 b

b <--  e, f  // b 依赖 e, f 两个服务。下面的服务关系类同, 不再写注释了。

g <--  b

a <--  e

最终排序为:

第一组:
y, [x, z]  // y 是第一批次。x 和 z 都属于第二批次,xz 不分先后

第二组:
[e, f],  b , [a, c, g] // e, f 属于第一批次,b 属于第二批次,a,c,g 属于第三批次

如何用 python 程序表达排序的逻辑呢?

1691 次点击
所在节点    Python
6 条回复
joApioVVx4M4X6Rf
2020-09-23 18:32:55 +08:00
是一个树状结构的话, 直接可以遍历树,按层次启动服务。如果要是图结构,就比较麻烦了
momocraft
2020-09-23 18:36:19 +08:00
"拓扑排序"
lithbitren
2020-09-23 20:43:11 +08:00
说起来,3.9 标准库好像有拓扑排序了
Leigg
2020-09-23 21:00:55 +08:00
你这都快成环形依赖了,完全是设计问题
Leigg
2020-09-23 21:04:58 +08:00
没仔细看,排序的目的是啥呢?
jasonqiao36
2020-09-29 14:38:05 +08:00
@Leigg #5 服务发布的时候, 有依赖关系, 所以要给服务进行排序

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

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

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

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

© 2021 V2EX