首页 > 解决方案 > 在 C# 中使用有向无环图跟踪服务运行时依赖项以进行部署

问题描述

前缀:是的,我知道服务之间的运行时依赖关系应该保持在最低限度

我正在使用 C# 编写类似于 NPM 的东西,但它会在部署时评估服务之间的运行时依赖关系。每个服务都有一个 .json 文件,用于跟踪其依赖历史记录,并随着服务的开发进行维护。换句话说,依赖关系会随着服务版本之间的时间而变化。在部署之前,我还将知道哪些服务版本当前正在运行。

在以特定版本部署 X 数量的服务之前,我想:

有向无环图对此似乎很自然,但顶点很有趣,因为服务 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"
      }
    }
  }
]

标签: c#deploymentmicroservicesversioningdirected-acyclic-graphs

解决方案


推荐阅读