Managing Long Running Tasks hard
When implementing retries for failed tasks, why use 'Exponential Backoff' with 'Jitter'?
- A To look cool.
- B To prevent 'Thundering Herd'. Increasing the delay (1s, 2s, 4s) reduces pressure on the failing service. Jitter (randomness) prevents all workers from retrying at the exact same millisecond.
- C To save CPU.
- D To encrypt data.
Answer: B. To prevent 'Thundering Herd'. Increasing the delay (1s, 2s, 4s) reduces pressure on the failing service. Jitter (randomness) prevents all workers from retrying at the exact same millisecond.
Without jitter, synchronized retries effectively create a DDOS attack.
One system design question a day, with spaced repetition so the ones you miss come back.
Get the appRelated questions
- What is the primary purpose of a Dead Letter Queue (DLQ)?
- The architectural pattern where one service creates tasks and another processes them is called:
- In a Priority Queue system (High vs Low), what is 'Starvation' and how do you fix it?
- How do you atomically update your local database AND publish a message to a queue without losing sync if the process crashes in between?
- What does 'Fire and Forget' mean?
- Why might you 'Throttle' (limit the speed of) your background workers?