Giới thiệu tổng quan về bài toán đồng thuận trong hệ thống phân tán: Two General Problem; FLP;...
Trình bày về thuật toán Raft:
- Leader election
- Log Replication
- Safety property
Các paper / blog ... tham khảo.
13. Key Value
Raft
2. call
Key Value
Raft
Key Value
Raft3. replicate
3. replicate
4. return
to FSM
1. Put / Get K/V
5. return
Leader
Follower 1
Follower 2
waiting
quorum
Flow diagram khi user gửi một request
14. Key Value
Raft
2. call
Key Value
Raft
Key Value
Raft3. replicate
3. replicate
4. return
to FSM
1. Put / Get K/V
5. return
Leader
Follower 1
Follower 2
waiting
quorum
call
denied
leader: 127.0.0.2
Flow diagram khi user gửi một request
32. S1: 5
S2: 5
S3: 5
• S1 là leader của term 5
• Sau đó, S1 bị crash và fast-restart trước khi các node khác nhận được time out.
• S1 start quá trình bầu chọn ở term 6.
S1: 5 6
S2: 5
S3: 5
• S1 là leader của term 6
• Một client insert data vào S1 tại term 6. Log sẽ được append vào local của S1.
• S1 chưa kịp replicate log qua các node khác thì node S1 bị crash và fast-restart trở lại (!!!)
S1: 5 6 7
S2: 5
S3: 5
• S1 tiếp tục là leader của term 7
• Tương tự như trên, một client insert data vào S1 ở term 7
• Tương tự, S1 chưa kịp replicate log qua các node khác thì node S1 bị crash
S1: 5 6 7
S2: 5 8
S3: 5 8
• Lần này, các node khác nhận ra S1 bị crash do timeout, khởi tạo quá trình bầu chọn.
• S2 trở thành leader tại term 8.
• Client insert data vào S2 tại term 8.
• S2 replicate log qua S3 —> majority. Như vậy, chắc chắn data tại term 8 buộc phải available trên toàn bộ machine.
S1: 5 6 7 9
S2: 5 8
S3: 5 8
• Sau khi S1 phục hồi, bắt đầu lại quá trình bầu chọn leader với term 9
• Nếu ta chọn giải pháp “candidate nào có độ dài log dài hơn là leader” —> S1 sẽ chiến thắng
• Khi đó, log ở S1 sẽ replicate qua S2 và S3 (log ở leader không bao giờ xoá)
S1: 5 6 7 9
S2: 5 6 7 9
S3: 5 6 7 9
• Khi đó, log ở term 8 bị mất —> vi phạm tính chất thuật toán: một log khi đã replicate qua quá bán các node, log
đấy sẽ không bao giờ bị thay đổi.
39. Node 2
Node 1
M
T
T
M
M
Log Matching Property
Phát biểu 1: Nếu 2 entry ở 2 đoạn log có chung index và term, 2 entry này có chung data.
Phát biểu 2: Nếu 2 entry ở 2 đoạn log có chung index và term tại vị trí T, toàn bộ log từ đầu đến T đều tương đồng nhau.