用于存储作业调度程序软件的作业依赖关系的数据结构

Data structure for storing job dependencies for job scheduler software

我正在编写作业调度程序。我的作业调度程序的功能之一是处理作业依赖性。例如:作业 A 可以定义在另一个作业 B 完成之前不要 运行 我,或者作业 A 可以定义在磁盘中存在某个文件 F 之前不要 运行 我等。

总而言之,我正在处理两种类型的依赖关系

  1. 一项工作对另一项工作的依赖性。

  2. 作业对某些基础结构的依赖性。

这里的要求是在任何时候有人可以要求生成某个作业的依赖图。为了有效地生成此图,我正在寻找一种格式来存储这些作业依赖项。请注意,持久性是一个文件系统。

您需要有向无环图 (DAG)。

  • Directed:表示依赖;
  • 非循环:确保不会发生死锁。

我想那么只需要知道如何存储图形即可。

IIRC,确保图的非循环性质的一种方法是 运行 后台的另一种算法,该算法会定期检查当前图是否有​​环并处于死锁状态。


为了完成,您的图形顶点可以存储以下内容:

  • 父作业列表 - 在此作业开始之前需要完成的作业;
  • 子作业列表 - 只有这个作业完成后才能启动的作业;
  • 工作 - 这份工作本身的详细信息。

此外,由于可能有一个作业或作业组不依赖于任何其他作业或作业组,因此您可能有一组 DAG,而不仅仅是一个 DAG。