Event-driven scheduling using directed acyclic graphs
First Claim
1. A system, comprising:
- a plurality of computing resources of a provider network;
a data store; and
one or more computing devices configured to implement a job scheduler, wherein the job scheduler is configured to;
receive information descriptive of a plurality of jobs;
generate a directed acyclic graph comprising a plurality of nodes and a plurality of edges, wherein the nodes represent at least a portion of the plurality of jobs, wherein the edges represent dependency relationships between individual ones of the jobs, and wherein information descriptive of jobs having unsatisfied dependency relationships is stored in a queue of pending jobs in the data store, wherein the queue of pending jobs is separate from the directed acyclic graph;
based at least in part on one or more events generated external to the directed acyclic graph regarding one or more of the plurality ofjobs, and on analysis of the directed acyclic graph, determine that one of the nodes represents a runnable job, wherein one or more of the dependency relationships for the runnable job, represented by one or more edges of the plurality of edges associated with the one of the nodes, have been satisfied by the one or more events generated external to the directed acyclic graph; and
place the runnable job in a queue of runnable jobs separate from the directed acyclic graph; and
wherein at least a subset of the computing resources are configured to;
initiate execution of the runnable job from the queue of runnable jobs.
1 Assignment
0 Petitions
Accused Products
Abstract
Methods, systems, and computer-readable media for event-driven scheduling using directed acyclic graphs are disclosed. A directed acyclic graph is generated that comprises a plurality of nodes and a plurality of edges. The nodes represent jobs, and the edges represent dependency relationships between individual jobs. Based (at least in part) on one or more events, a job scheduler determines that one of the nodes represents a runnable job. One or more of the dependency relationships for the runnable job are satisfied by the one or more events. An execution schedule is determined for the runnable job. Based (at least in part) on the execution schedule, execution of the runnable job is initiated using one or more computing resources.
24 Citations
20 Claims
-
1. A system, comprising:
-
a plurality of computing resources of a provider network; a data store; and one or more computing devices configured to implement a job scheduler, wherein the job scheduler is configured to; receive information descriptive of a plurality of jobs; generate a directed acyclic graph comprising a plurality of nodes and a plurality of edges, wherein the nodes represent at least a portion of the plurality of jobs, wherein the edges represent dependency relationships between individual ones of the jobs, and wherein information descriptive of jobs having unsatisfied dependency relationships is stored in a queue of pending jobs in the data store, wherein the queue of pending jobs is separate from the directed acyclic graph; based at least in part on one or more events generated external to the directed acyclic graph regarding one or more of the plurality ofjobs, and on analysis of the directed acyclic graph, determine that one of the nodes represents a runnable job, wherein one or more of the dependency relationships for the runnable job, represented by one or more edges of the plurality of edges associated with the one of the nodes, have been satisfied by the one or more events generated external to the directed acyclic graph; and place the runnable job in a queue of runnable jobs separate from the directed acyclic graph; and wherein at least a subset of the computing resources are configured to; initiate execution of the runnable job from the queue of runnable jobs. - View Dependent Claims (2, 3)
-
-
4. A computer-implemented method, comprising:
-
generating a directed acyclic graph comprising a plurality of nodes and a plurality of edges, wherein the nodes represent a plurality of jobs, and wherein the edges represent dependency relationships between individual ones of the jobs; based at least in part on one or more events generated external to the directed acyclic graph regarding one or more of the plurality of jobs, and on analysis of the directed acyclic graph, determining that one of the nodes represents a runnable job, wherein one or more of the dependency relationships for the runnable job, represented by one or more edges of the plurality of edges associated with the one of the nodes, are satisfied by the one or more events generated external to the directed acyclic graph; determining an execution schedule for the runnable job, wherein the execution schedule is separate from the directed acyclic graph; and based at least in part on the execution schedule, initiating execution of the runnable job using one or more computing resources. - View Dependent Claims (5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A computer-readable storage medium storing program instructions that, if executed, perform:
-
generating a directed acyclic graph comprising a plurality of nodes and a plurality of edges, wherein the nodes represent a plurality of jobs, and wherein the edges represent dependency relationships between individual ones of the jobs; based at least in part on one or more events generated external to the directed acyclic graph regarding one or more of the plurality of jobs, and on analysis of the directed acyclic graph, determining that one of the nodes represents a runnable job, wherein one or more of the dependency relationships for the runnable job, represented by one or more edges of the plurality of edges associated with the one of the nodes, are satisfied by the one or more events generated external to the directed acyclic graph; determining an execution schedule for the runnable job, wherein the execution schedule is separate from the directed acyclic graph, and comprises an execution order of the runnable job and one or more additional runnable jobs; and based at least in part on the execution schedule, initiating execution of the runnable job using one or more computing resources of a provider network. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
Specification