Introduction
A scheduler + async processing/worker is a common design pattern for handling complex workflows which involves a sequence of processing steps. At its core, it typically consists of three main components:
- a scheduler that manages tasks;
- (message) queue that holds pending tasks;
- workers that execute tasks asynchronously;
Common Building Blocks
- a {task | crawler | notification} scheduler
- queue or message queue: SQS, Kafka
- worker: AWS Lambda, EC2
Related System Design Questions
- Design a distributed job scheduler
- Design a web crawler (or Webhook)
- Design Leetcode
- Design Youtube (or Dropbox)
- Design notification service