Diseña un planificador de trabajos distribuido (ejecutar tareas a una hora dada o con un cron).
Respuesta
- API para crear trabajos: calendario, payload, política de reintentos.
- Guarda los trabajos en una base de datos indexada por
next_run_at. - Las instancias del planificador encuentran los trabajos pendientes y los reclaman de forma atómica (
SELECT ... FOR UPDATE SKIP LOCKED o leases), y luego los envían a una cola. - Los workers los ejecutan, informan del estado, reintentan con backoff y envían a una dead-letter queue tras N fallos.
- La ejecución es at-least-once, así que los trabajos deben ser idempotentes.
- Particionado o elección de líder para escalar los planificadores; heartbeats para recuperar trabajos de workers caídos; monitorización por trabajo.
Practica esta pregunta en Repaso