c# - 在 C# 中使用有向无环图跟踪服务运行时依赖项以进行部署
问题描述
前缀:是的,我知道服务之间的运行时依赖关系应该保持在最低限度
我正在使用 C# 编写类似于 NPM 的东西,但它会在部署时评估服务之间的运行时依赖关系。每个服务都有一个 .json 文件,用于跟踪其依赖历史记录,并随着服务的开发进行维护。换句话说,依赖关系会随着服务版本之间的时间而变化。在部署之前,我还将知道哪些服务版本当前正在运行。
在以特定版本部署 X 数量的服务之前,我想:
- 警告服务之间的循环依赖
- 警告服务之间不兼容的版本要求(要部署的服务 A 的版本需要服务 C >= 1.0.0 和 <2.0.0,但要部署的服务 B 的版本需要服务 C >= 2.0.0)
- 确定需要部署的所有依赖项的版本和部署顺序。(两种策略:部署最低兼容版本的服务/部署最高兼容版本的服务。)
有向无环图对此似乎很自然,但顶点很有趣,因为服务 A 对服务 B 的依赖可能只存在于服务 A v.1.1.0 - v.1.4.12,即它本质上是时间的。
我想要的是一些代码提示,或对现有代码的引用,关于如何表示服务依赖关系并遍历图表以满足需求。
我打算使用 NPM 兼容的版本约束来指定版本依赖项。因此,用于跟踪服务的运行时依赖项的 JSON 如下所示:
[
{
"FromVersion": "1.4.0",
"ToVersion": null,
"Dependencies": {
"runtimeDependencies": {
"service-B": "^2.0.0"
}
}
},
{
"FromVersion": "1.3.0",
"ToVersion": "1.3.0",
"Dependencies": {
"runtimeDependencies": {
"service-B": "^1.4.0"
}
}
}
]
解决方案
推荐阅读
- ruby-on-rails - 如何在 Ruby on Rails 中为动态模型添加动态属性
- android - Mapbox Android 中的可绘制资源
- css - 过渡后执行css
- excel - Excel 查询连接表
- json - WSO2 EI 从注册表中读取 json
- python - 使用 Python Mido 库选择 GM MIDI Level 2 乐器
- python - Elasticsearch与python如何在SQL请求之类的字符串中查找子字符串?
- javascript - Javascript基于递增键合并对象数组
- swift - 应用程序因错误而崩溃:无法推断通用参数“T”
- css - 为什么我们可以在 box-shadow 规则中首先获得颜色值?