Vấn đề: nhiều node cần đồng thuận về một giá trị / một leader duy nhất, dù có node lỗi hoặc mạng trễ.
Raft (dễ hiểu hơn Paxos):
- Mỗi node ở một trong ba vai: follower, candidate, leader.
- Thời gian chia thành term (nhiệm kỳ). Follower không nghe heartbeat sau timeout → thành candidate, tăng term, đi xin phiếu.
- Mỗi node chỉ bỏ một phiếu / term; candidate nhận đa số (quorum) phiếu → trở thành leader.
- Leader gửi heartbeat để giữ quyền; mọi ghi đi qua leader rồi replicate log sang follower, commit khi đa số đã ghi.
Vì sao cần đa số (N/2 + 1): hai đa số bất kỳ luôn giao nhau → không thể có hai leader cùng term (chống split-brain).
Đánh đổi: cần ≥ 3 (thường số lẻ) node để chịu 1 lỗi; leader là điểm ghi tập trung nên giới hạn write throughput; randomized election timeout để tránh vote lặp vô hạn.