Consensus II
Replicated State Machines, RAFT
Credits: Michael Freedman and Kyle Jamieson developed much of the original material. RAFT slides heavily based on those from Diego Ongaro and John Ousterhout.
Consensus II Replicated State Machines, RAFT CS 240: Computing - - PowerPoint PPT Presentation
Consensus II Replicated State Machines, RAFT CS 240: Computing Systems and Concurrency Lecture 10 Marco Canini Credits: Michael Freedman and Kyle Jamieson developed much of the original material. RAFT slides heavily based on those from Diego
Credits: Michael Freedman and Kyle Jamieson developed much of the original material. RAFT slides heavily based on those from Diego Ongaro and John Ousterhout.
2
Primary P
3
4
Primary P
5
Primary P
6
Primary P
7
Primary P
8
9
10
11
add jmp mov shl Log Consensus Module State Machine add jmp mov shl Log Consensus Module State Machine add jmp mov shl Log Consensus Module State Machine
shl 12
13
– Leader: handles all client interactions, log replication – Follower: completely passive – Candidate: used to elect a new leader
14
has crashed and starts new election
15
start timeout, start election receive votes from majority of servers timeout, new election discover server with higher term discover current leader
“step down”
16
Term 1 Term 2 Term 3 Term 4 Term 5 time
Elections Normal Operation Split Vote
– Increment current term, change to candidate state, vote for self
1. Receive votes from majority of servers:
2. Receive RPC from valid leader:
3. No-one wins election (election timeout elapses):
17
– Each server votes only once per term (persists on disk) – Two different candidates can’t get majorities in same term
– Each choose election timeouts randomly in [T , 2T] – One usually initiates and wins election before others start – Works well if T >> network RTT 18
Servers Voted for candidate A B can’t also get majority
– Durable / stable, will eventually be executed by state machines
19
1 add
1 2 3 4 5 6 7 8
3 jmp 1 cmp 1 ret 2 mov 3 div 3 shl 3 sub 1 add 3 jmp 1 cmp 1 ret 2 mov 1 add 3 jmp 1 cmp 1 ret 2 mov 3 div 3 shl 3 sub 1 add 1 cmp 1 add 3 jmp 1 cmp 1 ret 2 mov 3 div 3 shl
20
add jmp mov shl Log Consensus Module State Machine add jmp mov shl Log Consensus Module State Machine add jmp mov shl Log Consensus Module State Machine shl
21
add jmp mov shl Log Consensus Module State Machine add jmp mov shl Log Consensus Module State Machine add jmp mov shl Log Consensus Module State Machine shl
22
1 add
1 2 3 4 5 6
3 jmp 1 cmp 1 ret 2 mov 3 div 4 sub 1 add 3 jmp 1 cmp 1 ret 2 mov
23
1 add 3 jmp 1 cmp 1 ret 2 mov 1 add 1 cmp 1 ret 2 mov
1 2 3 4 5 1 add 3 jmp 1 cmp 1 ret 2 mov 1 add 1 cmp 1 ret 1 shl
AppendEntries succeeds: matching entry AppendEntries fails: mismatch
24
1 2 3 4 5 6 7 log index 1 1 1 1 5 5 6 6 6 6 1 1 5 5 1 4 1 1 1 7 7 2 2 3 3 3 2 7 term
s1 s2 s3 s4 s5
1. Leaders never overwrite entries in their logs 2. Only entries in leader’s log can be committed 3. Entries must be committed before applying to state machine
25
Restrictions on commitment Restrictions on leader election
26
1 2 1 1 2 1 2 3 4 5 1 2 1 1 1 2 1 1 2
Unavailable during leader transition Committed?
s1 s2
27
1 2 3 4 5 1 1 1 1 1 1 1 2 1 1 1
s1 s2 s3 s4 s5
2 2 2 2 2 2 2
Can’t be elected as leader for term 3 AppendEntries just succeeded Leader for term 2
– s5 can be elected as leader for term 5 – If elected, it will overwrite entry 3 on s1, s2, and s3
28
1 2 3 4 5 1 1 1 1 1 1 1 2 1 1 1
s1 s2 s3 s4 s5
2 2 3 4 3
AppendEntries just succeeded Leader for term 4
3
e3 and e4 both safe
29
1 2 3 4 5 1 1 1 1 1 1 1 2 1 1 1
s1 s2 s3 s4 s5
2 2 3 4 3 4 4 3
Leader for term 4
30
1 4 1 1 4 5 5 6 6 6
Leader for term 8
1 4 1 1 4 5 5 6 6 1 4 1 1 1 4 1 1 4 5 5 6 6 6 6 1 4 1 1 4 5 5 6 6 6 1 4 1 1 4 1 1 1
Possible followers
4 4 7 7 2 2 3 3 3 3 3 2
(a) (b) (c) (d) (e) (f) Missing Entries Extraneous Entries
1 2 3 4 5 6 7 8 9 10 11 12
1 4 1 1 4 5 5 6 6 6
Leader for term 7
1 2 3 4 5 6 7 8 9 10 11 12 1 4 1 1 1 1 1
Followers
2 2 3 3 3 3 3 2
(a) (b) nextIndex
1 4 1 1 4 5 5 6 6 6
Leader for term 7
1 2 3 4 5 6 7 8 9 10 11 12 1 4 1 1 1 1 1
Before repair
2 2 3 3 3 3 3 2
(a) (f)
1 1 1 4
(f) nextIndex After repair
33
– If leader unknown, contact any server, which redirects client to leader
– Client reissues command to new leader (after possible redirect)
– E.g., Leader can execute command then crash before responding – Client should embed unique ID in each command – This client ID included in log entry – Before accepting request, leader checks log for entry with same id
34
35
36
Server 1 Server 2 Server 3 Server 4 Server 5
time
Majority of Cold Majority of Cnew
37
time Cold+new entry committed Cnew entry committed Cold Cold+new Cnew Cold can make unilateral decisions Cnew can make unilateral decisions
38
time Cold+new entry committed Cnew entry committed Cold Cold+new Cnew Cold can make unilateral decisions Cnew can make unilateral decisions leader not in Cnew steps down here
39
40
41