Thuật toán Ứng dụng — DP, String, Big Data & hơn nữa
~11 phútThuật toán phân tánAll-Access

Module 9 — Tổng kết & cheat sheet

Recap phân tán: cheat sheet 6 thuật toán theo bài toán, 18 thuật ngữ bằng lời thường, bẫy hay gặp, tự kiểm tra khớp learning outcomes.

TL;DR: Module 9 gồm sáu thuật toán nền của hệ phân tán. Consistent hashing chia key lên các máy mà thêm máy chỉ dời cỡ K/(N+1) key. Quorum R+W>N làm tập đọc chạm bản ghi đã xác nhận. Merkle tree chỉ ra hai replica lệch ở đâu. Vector clock phân biệt "có trước" với "xảy ra song song". Gossip lan tin khắp cluster sau O(log N) vòng. Raft đưa cả cluster về một lịch sử lệnh duy nhất. Trang này là cheat sheet: bảng 6 thuật toán theo bài toán, 18 thuật ngữ, 3 bẫy liên module và 5 câu tự kiểm tra khớp learning outcomes.

Đã đi qua những gì

Bạn bắt đầu từ một câu hỏi: tại sao hệ phân tán cần thuật toán riêng? Vì không có bộ nhớ chung, không có đồng hồ chung, và không máy nào biết đủ trạng thái của cả hệ thống. Sáu thuật toán là sáu cách xử lý hệ quả của việc thiếu ba thứ đó.

Chi tiết từng thuật toán nằm ở bài 01 đến 08; bảng dưới gom chúng lại theo bài toán cần giải.

Cheat sheet

Bảng 6 thuật toán theo bài toán

Thuật toánBài toán giảiĐánh đổi chínhHệ thống thật
Consistent hashingPhân mảnh key lên N node không xáo trộn khi co giãnCần sorted ring + binary search; vnode tốn thêm bộ nhớCassandra, Dynamo, client Memcached (ketama)
Quorum R+W>NĐọc/ghi nhất quán trên replica khi một số node chếtR+W cao → consistency tốt nhưng latency cao; R+W thấp → nhanh nhưng có thể đọc bản cũ (stale)Cassandra (tunable), Riak, Dynamo (bài báo gốc)
Merkle treePhát hiện và sửa chênh lệch giữa replica trong O(log N)Dựng tree tốn O(N) mỗi lần repair; chỉ hiệu quả khi chênh lệch nhỏCassandra anti-entropy, Git, ZFS
Vector clockTheo dõi quan hệ nhân quả giữa các sự kiện khi không có đồng hồ chungVector dài ra theo số process; chỉ phát hiện conflict chứ không tự giải quyếtDynamo (bài báo gốc), Riak
Gossip protocolLan truyền membership và phát hiện node chết mà không cần coordinatorEventual consistency (vài giây trễ); thông tin có thể cũ trước khi hội tụCassandra, Bitcoin, Consul
Raft consensusĐồng thuận mạnh trên một log thứ tự duy nhấtMỗi nhóm Raft thường chỉ 3 đến 7 node; mất quorum = mất availabilityetcd, Consul, TiKV, CockroachDB

Quyết định chọn thuật toán

Cây chọn công cụ phân tán theo bài toán đang gặp, năm câu hỏi dẫn tới sáu công cụ

CAP tra nhanh

Hệ thốngCAPLý do
Cassandra (ONE)✗✓✓AP: luôn ghi được, eventual consistency
Cassandra (QUORUM)✓ (khi đạt quorum)✗ (khi không đạt quorum)✓Mạng chia mà không đủ quorum thì từ chối, nghiêng về CP (nhưng R+W>N một mình chưa bằng linearizable)
etcd / Raft✓✗ (khi mất quorum)✓CP: từ chối phục vụ khi mất quorum
Zookeeper✓ (ghi; đọc từ follower có thể cũ, cần sync())✗ (leader election)✓CP: tương tự etcd

All-Access Pass

Phần còn lại của bài dành cho All-Access Pass

Bạn vừa đọc phần xem trước. Hai bài đầu của mỗi khoá luôn đọc trọn miễn phí.

  • Đọc trọn mọi bài trong 6 khoá System Design và dữ liệu phân tán
  • AI Mentor trả lời theo toàn bộ nội dung bài
  • Trả một lần, không tự gia hạn, không tự trừ tiền

Trọn đời

1.690.000 ₫

Trả một lần, dùng mãi mãi

Gói năm

699.000 ₫

365 ngày · ≈ 58.000 ₫/tháng

Thanh toán bằng thẻ Visa/Master/JCB qua Polar. Xem bảng giá

Đã mua? Đăng nhập để đọc tiếp

Bài này có giúp bạn hiểu bản chất không?

Bài này đáng gửi cho bạn học cùng?

Copy link đã gắn nguồn — dán group, chat, hoặc LinkedIn.

Thảo luận & góp ý

Hỏi đáp về bài này