用于存储作业调度程序软件的作业依赖关系的数据结构
Data structure for storing job dependencies for job scheduler software
我正在编写作业调度程序。我的作业调度程序的功能之一是处理作业依赖性。例如:作业 A 可以定义在另一个作业 B 完成之前不要 运行 我,或者作业 A 可以定义在磁盘中存在某个文件 F 之前不要 运行 我等。
总而言之,我正在处理两种类型的依赖关系
一项工作对另一项工作的依赖性。
作业对某些基础结构的依赖性。
这里的要求是在任何时候有人可以要求生成某个作业的依赖图。为了有效地生成此图,我正在寻找一种格式来存储这些作业依赖项。请注意,持久性是一个文件系统。
您需要有向无环图 (DAG)。
- Directed:表示依赖;
- 非循环:确保不会发生死锁。
我想那么只需要知道如何存储图形即可。
IIRC,确保图的非循环性质的一种方法是 运行 后台的另一种算法,该算法会定期检查当前图是否有环并处于死锁状态。
为了完成,您的图形顶点可以存储以下内容:
- 父作业列表 - 在此作业开始之前需要完成的作业;
- 子作业列表 - 只有这个作业完成后才能启动的作业;
- 工作 - 这份工作本身的详细信息。
此外,由于可能有一个作业或作业组不依赖于任何其他作业或作业组,因此您可能有一组 DAG,而不仅仅是一个 DAG。
我正在编写作业调度程序。我的作业调度程序的功能之一是处理作业依赖性。例如:作业 A 可以定义在另一个作业 B 完成之前不要 运行 我,或者作业 A 可以定义在磁盘中存在某个文件 F 之前不要 运行 我等。
总而言之,我正在处理两种类型的依赖关系
一项工作对另一项工作的依赖性。
作业对某些基础结构的依赖性。
这里的要求是在任何时候有人可以要求生成某个作业的依赖图。为了有效地生成此图,我正在寻找一种格式来存储这些作业依赖项。请注意,持久性是一个文件系统。
您需要有向无环图 (DAG)。
- Directed:表示依赖;
- 非循环:确保不会发生死锁。
我想那么只需要知道如何存储图形即可。
IIRC,确保图的非循环性质的一种方法是 运行 后台的另一种算法,该算法会定期检查当前图是否有环并处于死锁状态。
为了完成,您的图形顶点可以存储以下内容:
- 父作业列表 - 在此作业开始之前需要完成的作业;
- 子作业列表 - 只有这个作业完成后才能启动的作业;
- 工作 - 这份工作本身的详细信息。
此外,由于可能有一个作业或作业组不依赖于任何其他作业或作业组,因此您可能有一组 DAG,而不仅仅是一个 DAG。