Repaso
English
Diseño de sistemasAvanzadoSD-30

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.

Términos clave

Practica esta pregunta en Repaso