Design of a Distributed Task Scheduler

Explore and connect the design components of the distributed task scheduler.

We'll cover the following

Let’s identify the components used in this design:

Components

We can consider scheduling at many levels. We could be asked to design scheduling that is done internally by an organization to run tasks on their own cluster of machines. There, they have to find ample resources and need to decide which task to run first.

On the other hand, we could also be asked to design scheduling that a cloud provider uses to schedule tasks coming from multiple clients. Cloud providers need to decide which task to run first and which clients to handle first to provide appropriate isolation between different tenants.

So, in general, the big components of our system are:

  • Clients: They initiate the task execution.
  • Resources: The task is executed on these components.
  • Scheduler: A scheduler performs processes between clients and resources and decides which task should get resources first.