Update Parallelism
April 30, 2018
1
Update Parallelism April 30, 2018 1 HW 3 Posted 2 Parallelism - - PowerPoint PPT Presentation
Update Parallelism April 30, 2018 1 HW 3 Posted 2 Parallelism Models Option 4: Shared Nothing in which all communication is explicit. CPU Memory Disk Well be talking about shared nothing today. Other models are easier
April 30, 2018
1
HW 3 Posted
2
3
CPU Memory Disk …
We’ll be talking about “shared nothing” today. Other models are easier to work with.
Option 4: “Shared Nothing” in which all communication is explicit.
4
(needed for safety)
5
What can go wrong?
T1: W(X) T2: W(X) T2: W(Y) T1: W(Y)
5
What can go wrong?
T1: W(X) T2: W(X) T2: W(Y) T1: W(Y)
6
What can go wrong?
6
What can go wrong?
7
What can go wrong?
7
What can go wrong?
8
What can go wrong?
8
What can go wrong?
X Y Y X
9
What can go wrong?
9
What can go wrong? Classical Xacts
9
What can go wrong? Classical Xacts “Partitions”
9
What can go wrong? Classical Xacts “Partitions” Consensus
10
(needed for safety)
11
Master Slave
Y X Y X
“Safe” … but Node 1 is a bottleneck.
12
Master for A Master for B Node 2 agrees to Node 1’s order for A. Node 1 agrees to Node 2’s order for B.
Y X Y X
13
From Node 1’s perspective, these are the same! Channel Failure Node Failure
14
15
A=1 B=5 A=1 B=5
16
Option 1: Node 1 takes over
A=1 B=5
17
Option 1: Node 1 takes over
Node 2 is down. I control A & B now!
A=1 B=5
18
Option 1: Node 1 takes over
Node 2 is down. I control A & B now! A = 2 B = 6
A=2 B=6
19
Option 1: Node 1 takes over
A=2 B=6 A=2 B=6
20
Option 1: Node 1 takes over
A=1 B=5 A=1 B=5
21
Option 1: Node 1 takes over
A=1 B=5 A=1 B=5
Node 2 is down. I control A & B now!
22
Option 1: Node 1 takes over
A=2 B=6 A=1 B=5
Node 2 is down. I control A & B now! A = 2 B = 6
23
Option 1: Node 1 takes over
A=2 B=6 A=1 B=5 INCONSISTENCY!
24
Option 2: Wait
25
A = 2 B = 6
Option 2: Wait
26
I can’t talk to Node 2 Let me wait! A = 2 B = 6
Option 2: Wait
27
I can’t talk to Node 2 Let me wait! A = 2 B = 6
Option 2: Wait
28
I can’t talk to Node 2 Let me wait! A = 2 B = 6 All set
Option 2: Wait
29
Option 2: Wait
29
Option 2: Wait
30
I can’t talk to Node 2 Let me wait! A = 2 B = 6
Option 2: Wait
31
I can’t talk to Node 2 Let me wait! A = 2 B = 6 Still waiting…
Option 2: Wait
32
Option 1: Assume Node Failure All data is available… but at risk of inconsistency. Option 2: Assume Connection Failure All data is consistent… but unavailable
33
s i s t e n c y v a i l a b i l i t y
a r t i t i
Traditionally: Pick any 2 T
e r a n c e
34
during
s i s t e n c y v a i l a b i l i t y a r t i t i
s I prefer this phrasing
35
Master for A Master for B Node 2 agrees to Node 1’s order for A. Node 1 agrees to Node 2’s order for B.
Y X Y X
36
Master for A Master for B What if we need to coordinate between A & B?
Y X Y X Withdraw $1000 from A Deposit $1000 into B
37
37
37
37
38
That packet sure does look tasty…
39
Is it safe to abort?
40
What now?
41
How do we know Node 2 even still exists?
42
43
44
Coordinator Node 1 Node 2
45
Coordinator Node 1 Node 2 “Prepare”
46
Coordinator Node 1 Node 2 “Prepare” “Commit” “Commit”
47
Coordinator Node 1 Node 2 “Prepare”
We are go for Commit
“Commit” “Commit”
48
Coordinator Node 1 Node 2 “Prepare” “Commit”
We are go for Commit
“Commit” “Commit”
49
Coordinator Node 1 Node 2 “Prepare” “Commit” “ACK” “ACK”
ACKs received Commit successful We are go for Commit
“Commit” “Commit”
50
Coordinator Node 1 Node 2 “Prepare”
Commit Canceled
“Abort” “ACK” “ACK”
ACKs received Abort successful
“Commit” “Abort”
If any participant aborts in Phase 1, everyone aborts.
51
Coordinator Node 1 Node 2 “Prepare” “Commit” “ACK” “ACK”
ACKs received Commit successful We are go for Commit
“Commit” “Commit”
A Node “Commit” means the node is able to commit. A Coordinator “Commit” means the transaction must commit.
52
Coordinator Node 1 Node 2 “Prepare” “Commit” “ACK” “ACK”
ACKs received Commit successful We are go for Commit
“Commit” “Commit”
Once a node commits, the xact is still not committed yet. However the node must avoid breaking the commit.
53
Coordinator Node 1 Node 2 “Prepare” “Commit”
53
Coordinator Node 1 Node 2 “Prepare” “Commit”
Prepare unreceived and unacknowledged: Coordinator (1) Retries, or (2) Aborts
54
Coordinator Node 1 Node 2 “Prepare” “Commit”
CRASH!
54
Coordinator Node 1 Node 2 “Prepare” “Commit”
Node 2 crashes before responding: Restart and continue as a dropped packet
CRASH!
55
Coordinator Node 1 Node 2 “Prepare” “Commit” “Commit”
55
Coordinator Node 1 Node 2 “Prepare” “Commit” “Commit”
Node “Commit” unreceived: (1) Re-sent “Prepare” can be ignored. (2) Node still able to abort.
56
Coordinator Node 1 Node 2 “Prepare” “Commit” “Commit”
CRASH!
56
Coordinator Node 1 Node 2 “Prepare” “Commit” “Commit”
Node 2 crashes after responding: Restart from log
CRASH!
57
Coordinator Node 1 Node 2 “Prepare” “Commit” “ACK”
We are go for Commit
“Commit” “Commit”
57
Coordinator Node 1 Node 2 “Prepare” “Commit” “ACK”
We are go for Commit
“Commit” “Commit”
Coordinator “Commit” unreceived: Commit must happen, coordinator resends
58
Coordinator Node 1 Node 2 “Prepare” “Commit” “ACK”
We are go for Commit
“Commit” “Commit”
CRASH!
58
Coordinator Node 1 Node 2 “Prepare” “Commit” “ACK”
We are go for Commit
“Commit” “Commit”
Node 2 crash: Restart. Already logged “Commit” message, so all is well.
CRASH!
59
Coordinator Node 1 Node 2 “Prepare” “Commit” “ACK” “ACK”
We are go for Commit
“Commit” “Commit”
59
Coordinator Node 1 Node 2 “Prepare” “Commit” “ACK” “ACK”
We are go for Commit
“Commit” “Commit”
Node “Ack” unreceived: Ok. Resent “Commit” ignored by node
60
Coordinator Node 1 Node 2 “Prepare” “Commit” “ACK”
We are go for Commit
“Commit” “Commit”
CRASH!
“ACK”
60
Coordinator Node 1 Node 2 “Prepare” “Commit” “ACK”
We are go for Commit
“Commit” “Commit”
Node crash after “Ack”: Ok. Log already recorded commit
CRASH!
“ACK”
61
61
62
63
When is a replica write durable?
64
Never.
64
Never. What you should be asking is how much durability do you need?
65
For N Failures N+1 Replicas (Assuming Failure = Crash)
66
Coordinator Node 1 “Prepare” “Commit” Node 1 asserts that the commit is durable! What if Node 1 fails?
67
Coordinator Node 1 Replica “Prepare” “Commit” “Prepare” “Commit”
67
Coordinator Node 1 Replica “Prepare” “Commit” “Prepare” “Commit” Waiting for Node 1 to replicate is slooooow! Let the coordinator take over!
68
Coordinator Node 1 Replica “Prepare” “Commit” “Commit”
68
Coordinator Node 1 Replica “Prepare” Like 2PC… … but better. We may not need to wait for the replica “Commit” “Commit”
69
A: Prepare
Coordinator Alice Coordinator Bob
B: Prepare A: Prepare B: Prepare A: Prepare B: Prepare
70
Coordinator Alice Coordinator Bob
A: Prepare B: Prepare A: Prepare B: Prepare A: Prepare B: Prepare
71
Coordinator Alice Coordinator Bob
B: Prepare B: Prepare A: Prepare
Commit! Commit!
72
Majority Vote N Replicas (N/2)+1 Votes Needed
73
Forget transactions, let’s go back to reads & writes Can we do better than 2PC if we don’t need xacts?
74
W(A = 3) (1) Alice writes ‘A’
75
W(A = 3) (1) Alice writes ‘A’ (2) Alice tells Bob
76
W(A = 3) (1) Alice writes ‘A’ (2) Alice tells Bob (3) Bob reads ‘A’ R(A)
77
W(A = 42) (1) Alice writes ‘A’ (2) Alice tells Bob (3) Bob reads ‘A’ R(A) What can we do to guarantee that Bob will see the 42?
78
Approach: Alice and Bob each wait for multiple responses. Alice waits for ‘ack’s Bob waits for read responses. How many responses are required for each?
79
W(A = 42) R(A) ACK
80
W(A = 42) R(A) ACK “666”
81
W(A = 42) R(A) ACK “666”
82
W(A = 42) R(A) ACK “666”
83
Like Majority Vote N Replicas R Replica Reads Needed W Writer Acks Needed R + W > N