distributedsystem distributedsystem/microservice

ACID Principles > Atomicity
Argus · Distributed Systems Engineering Lecture notes (MIT 6.824)

A blocking protocol to ensure atomic commit across distributed systems.

This protocol requires a coordinator node, which basically coordinates and oversees the transaction across different nodes. The coordinator tries to establish the consensus among a set of processes in two phases, hence the name.

1. Prepare Phase

  • Coordinator sends PREPARE request to all participants.
  • Each participant:
    • Checks if it can commit.
    • Writes to a log, then replies with YES or NO.

2. Commit Phase

  • If all participants voted YES:
    • Coordinator sends COMMIT.
  • If any voted NO:
    • Coordinator sends ABORT.

It Can lead to both the coordinator and the group members blocking, which may lead to the dreaded deadlock.

**Blocking issue**: if the coordinator crashes after participants vote `YES`, they get **stuck waiting** indefinitely.