Managing Long Running Tasks hard
In a distributed transaction (e.g., Order -> Inventory -> Payment), instead of 2PC, we often use:
- A Sagas (using compensation transactions triggered by message queues).
- B Ignoring errors.
- C Single large database.
- D Manual review.
Answer: A. Sagas (using compensation transactions triggered by message queues).
Long-running transactions shouldn't lock row resources across services. Sagas are eventual consistent state machines.
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?