Presentation is loading. Please wait.

Presentation is loading. Please wait.

2PC Recap Eventual Consistency & Dynamo

Similar presentations


Presentation on theme: "2PC Recap Eventual Consistency & Dynamo"— Presentation transcript:

1 2PC Recap Eventual Consistency & Dynamo
6.830 Lecture 18 2PC Recap Eventual Consistency & Dynamo

2 Two-phase commit Coordinator Suboordinate PREPARE(T)
FW(PREPARE, T,locks,…) VOTE(T,YES/NO) Prepared suboorindate’s wait to hear outcome from C Recover into prepared state and ask C for outcome If all yes FW(COMMIT) Else FW(ABORT) COMMIT/ABORT(T) C must remember outcome until all S’s ack FW(COMMIT/ABORT) S can forget about transaction at this point -- ACK W(DONE), once all S’s ACK C can forget about transaction at this point

3 Presumed Abort – if transaction aborts
Coordinator Suboordinate PREPARE(T) FW(PREPARE, T,locks,…) VOTE(T,YES/NO) If all yes FW(COMMIT) Else FW(ABORT) COMMIT/ABORT(T) FW(COMMIT/ABORT) ACK W(DONE), once all S’s ACK

4 Presumed Abort – if transaction aborts
Coordinator Suboordinate PREPARE(T) FW(PREPARE, T,locks,…) VOTE(T,YES/NO) If all yes FW(COMMIT) Else FW(ABORT) W(ABORT) COMMIT/ABORT(T) FW(COMMIT/ABORT) ACK W(DONE), once all S’s ACK

5 Presumed Abort – if transaction aborts
Coordinator Suboordinate PREPARE(T) FW(PREPARE, T,locks,…) VOTE(T,YES/NO) If all yes FW(COMMIT) Else FW(ABORT) W(ABORT) COMMIT/ABORT(T) FW(COMMIT/ABORT) W(ABORT) ACK W(DONE), once all S’s ACK

6 Presumed commit – if transaction commits
Can’t just reply “COMMIT” in no information case Suppose C sends prepare messages, then crashes S sends vote, doesn’t hear anything, re-requests Eventually C recovers, rolls back, and replies “COMMIT” (because it has no information about xaction) Soln: prior to sending prepare, C force writes an additional “BEGIN COMMIT” records with a list of all workers If it crashes prior to writing COMMIT/ABORT, it can restart commit process, contact workers and ensure they know the outcome Adds an additional force write on C, but allows COMMIT to be an async write

7 Presumed commit – if transaction commits
Coordinator Suboordinate PREPARE(T) FW(PREPARE, T,locks,…) VOTE(T,YES/NO) FW(COMMIT) COMMIT FW(COMMIT) ACK W(DONE), once all S’s ACK

8 Presumed commit – if transaction commits
Coordinator Suboordinate FW(BEGIN COMMIT, Suboord list) PREPARE(T) FW(PREPARE, T,locks,…) VOTE(T,YES/NO) FW(COMMIT) COMMIT FW(COMMIT) ACK W(DONE), once all S’s ACK

9 Presumed commit – if transaction commits
Coordinator Suboordinate FW(BEGIN COMMIT, Suboord list) PREPARE(T) FW(PREPARE, T,locks,…) VOTE(T,YES/NO) W(COMMIT) COMMIT FW(COMMIT) ACK W(DONE), once all S’s ACK

10 Presumed commit – if transaction commits
Coordinator Suboordinate FW(BEGIN COMMIT, Suboord list) PREPARE(T) FW(PREPARE, T,locks,…) VOTE(T,YES/NO) W(COMMIT) COMMIT W(COMMIT) ACK W(DONE), once all S’s ACK

11 Presumed commit – if transaction commits
Coordinator Suboordinate FW(BEGIN COMMIT, Suboord list) PREPARE(T) FW(PREPARE, T,locks,…) VOTE(T,YES/NO) W(COMMIT) COMMIT W(COMMIT)

12 2PC -- Problems 2 network round trips + synchronous logging  high overheads Particularly when Coord and Suboord are far apart, i.e., in different data centers If Coord fails, Suboords must wait, or somehow choose a new coordinator If Coord + 1 Suboord fail, no way to recover Coord may have told failed Suboord about outcome, it may have exposed results 2PC sacrifices availability of system for consistency 2PC is probably not a good choice in a wide-area distributed setting Due to possibility of network failures, and wide area latency Alternatives: use a more complicated consensus protocol (e.g., Paxos), or relax consistency


Download ppt "2PC Recap Eventual Consistency & Dynamo"

Similar presentations


Ads by Google