Job scheduler, where you can define a job to be scheduled at a specific time.
- Schedule service handles API requests and schedules tasks (java.util.Timer)
Tasks are stored in memory and will be lost if reboot the schedule service.
- API service handles API requests and save tasks to DB
- Database stores task metadata and next execution time
- Task runner retrieves tasks periodically and execute them
The task runner has multiple responsibility: scheduling and execution
You can use Docker Compose to fast deploy
docker-compose --profile stores --profile services up
- https://levelup.gitconnected.com/system-design-designing-a-distributed-job-scheduler-6d3b6d714fdb
- https://medium.com/@vaasubisht/building-a-distributed-job-scheduler-system-00aec500cf48
- https://www.geeksforgeeks.org/design-distributed-job-scheduler-system-design/
- https://blog.algomaster.io/p/design-a-distributed-job-scheduler