Lý thuyết, thuật toán và giao thức phân tán: CAP, BASE, tập trung và phi tập trung, Paxos, Raft và Consistent Hashing
Lý thuyết, thuật toán và giao thức phân tán là nền tảng để hiểu distributed system. Khi học phần này, không nên chỉ học thuộc kết luận; quan trọng hơn là hiểu sự đánh đổi giữa consistency, availability, fault tolerance, consensus, performance và độ phức tạp khi triển khai trong thực tế của các phương án khác nhau.
Dành cho ai
- Backend developer muốn hiểu một cách hệ thống về distributed consistency, consensus algorithm và phân bố dữ liệu.
- Những bạn chuẩn bị phỏng vấn về distributed system, system design và backend architecture.
- Những người chỉ dừng ở mức “đã học thuộc” các khái niệm như CAP, BASE, Paxos, Raft, ZAB, Gossip.
- Kỹ sư cần hiểu cơ chế bên trong của ZooKeeper, Redis Cluster, distributed cache và service discovery.
Trọng tâm học
- CAP và BASE không phải khẩu hiệu; chúng tương ứng với những đánh đổi thực tế nào trong engineering?
- Centralized và decentralized đang giải quyết vấn đề gì? Leader, majority và Gossip lần lượt phù hợp với những trường hợp nào?
- Paxos, Raft và ZAB đều giải quyết bài toán consensus; tại sao độ phức tạp khi triển khai và trường hợp sử dụng của chúng lại khác nhau?
- Tại sao Gossip phù hợp với việc lan truyền trạng thái giữa số lượng lớn node, và nó khác gì với strong consistency protocol?
- Consistent Hashing làm giảm chi phí di chuyển dữ liệu khi mở rộng hoặc thu hẹp node như thế nào?
- Trong phỏng vấn, làm thế nào để trình bày rõ một protocol theo “bối cảnh vấn đề -> ý tưởng cốt lõi -> quy trình -> ưu / nhược điểm -> trường hợp sử dụng”?
Các bài viết trong nhóm này bổ trợ cho nhau như thế nào?
Giải thích chi tiết CAP theorem và BASE theory chịu trách nhiệm giải thích nhóm đánh đổi “consistency, availability, partition tolerance” trong distributed system. Giải thích chi tiết distributed coordination tiếp tục đi sâu vào các trường hợp engineering, thảo luận ai là người đưa ra quyết định, tại sao Leader cũ có thể gây ra vấn đề và khi nào nên dùng Gossip.
Paxos, Raft và ZAB thuộc tuyến consensus protocol. Nên đọc Giải thích chi tiết thuật toán Raft trước, sau đó đọc Giải thích chi tiết thuật toán Paxos và Giải thích chi tiết giao thức ZAB. Raft phù hợp hơn cho người mới bắt đầu, Paxos gần với lý thuyết kinh điển hơn, còn ZAB tương ứng với atomic broadcast và crash recovery của ZooKeeper.
Giải thích chi tiết Gossip protocol và Giải thích chi tiết thuật toán Consistent Hashing không phụ trách thứ tự ghi strong consistency; chúng lần lượt giải quyết vấn đề lan truyền trạng thái và ánh xạ dữ liệu. Đặt hai bài này sau các consensus protocol sẽ giúp tránh nhầm lẫn giữa “lan truyền trạng thái” và “đạt được consensus”.
Thứ tự đọc đề xuất
- Giải thích chi tiết CAP theorem và BASE theory: trước tiên xây dựng góc nhìn về sự đánh đổi giữa consistency, availability và partition tolerance.
- Giải thích chi tiết distributed coordination: đặt Leader, Quorum, split-brain, Lease, Fencing Token và Gossip trên cùng một mạch nội dung.
- Giải thích chi tiết bài toán các vị tướng Byzantine: hiểu node độc hại, message mâu thuẫn, yêu cầu
3m + 1node và giới hạn fault tolerance của BFT. - Giải thích chi tiết thuật toán Raft: làm quen với consensus algorithm qua Leader election và log replication tương đối dễ hiểu.
- Giải thích chi tiết thuật toán Paxos: hiểu vai trò, các phase và điểm khó của consensus algorithm kinh điển.
- Giải thích chi tiết giao thức ZAB: đưa consensus algorithm vào bối cảnh message broadcast và crash recovery của ZooKeeper.
- Giải thích chi tiết Gossip protocol và Giải thích chi tiết thuật toán Consistent Hashing: hiểu việc lan truyền trạng thái và phân bố dữ liệu trong các system quy mô lớn.
Bài viết cốt lõi
Consistency và distributed theory
- Giải thích chi tiết CAP theorem và BASE theory: hiểu sự đánh đổi giữa consistency, availability và partition tolerance, cũng như ý nghĩa engineering của BASE theory và eventual consistency.
- Giải thích chi tiết distributed coordination: hiểu tại sao distributed system cần coordination, cũng như Leader/Quorum, Gossip, Lease và Fencing Token lần lượt xử lý các vấn đề coordination như thế nào.
- Giải thích chi tiết bài toán các vị tướng Byzantine: hiểu khi tồn tại node độc hại hoặc node bất thường, các node bình thường làm thế nào để đạt được cùng một kết quả.
Consensus algorithm
- Giải thích chi tiết thuật toán Paxos: hiểu vai trò của Proposer, Acceptor, Learner, quy trình hai phase và tối ưu hóa Multi-Paxos.
- Giải thích chi tiết thuật toán Raft: hiểu Leader election, log replication, các ràng buộc về safety, thay đổi member và khác biệt so với Paxos.
- Giải thích chi tiết giao thức ZAB: hiểu ZooKeeper Atomic Broadcast, message broadcast, crash recovery, ZXID và transaction log.
Lan truyền và phân bố dữ liệu
- Giải thích chi tiết Gossip protocol: hiểu anti-entropy, rumor propagation, mô hình Push/Pull, SWIM protocol và eventual consistency.
- Giải thích chi tiết thuật toán Consistent Hashing: hiểu hash ring, virtual node, mở rộng và thu hẹp node, data skew và ứng dụng trong distributed cache.
Câu hỏi thường gặp
- C, A và P trong CAP lần lượt có nghĩa là gì? Tại sao partition tolerance thường không thể loại bỏ?
- BASE theory và eventual consistency giải quyết vấn đề gì?
- Centralized design và decentralized design khác nhau như thế nào? Tại sao có Leader không nhất thiết đồng nghĩa với single point?
- Tại sao Paxos khó hiểu? Basic Paxos và Multi-Paxos khác nhau như thế nào?
- Tại sao Raft dễ triển khai trong engineering hơn? Leader election và log replication bảo đảm safety như thế nào?
- ZAB và Raft có những điểm tương đồng và khác biệt nào?
- Gossip protocol phù hợp với những trường hợp nào? Tại sao nó thường không cung cấp strong consistency?
- Tại sao Consistent Hashing cần virtual node?
Chuyên đề liên quan
- Hệ thống kiến thức về distributed system
- Chuyên đề ZooKeeper
- Giải thích chi tiết distributed configuration center
- Giải thích chi tiết phương án tạo distributed ID
Lời cuối
Nếu nội dung hữu ích với bạn, hãy tiện tay tặng JavaGuide một Star miễn phí để ủng hộ: GitHub | Gitee.
JavaGuide đã được duy trì gần bảy năm, tích lũy 6100+ commit, với sự chung tay hoàn thiện của 620+ contributor. Star, phản hồi và PR của bạn đều là động lực để dự án tiếp tục cập nhật.
Nếu bạn đang chuẩn bị phỏng vấn backend / phát triển ứng dụng AI, có thể tham khảo Knowledge Planet của tôi, bao gồm các project thực tế về backend và AI, tối ưu CV, hỏi đáp 1-1 và tài liệu về các trọng điểm thường gặp, đã được duy trì liên tục sáu năm.
