Minh họa cho Định lý CAP
Law #10 Kiến trúc

Định lý CAP

CAP Theorem

Trong hệ phân tán có phân vùng mạng, bạn không thể đồng thời tối đa cả nhất quán lẫn sẵn sàng.

Nguồn tham khảo: Laws of Software Engineering

Tổng quan

Định lý CAP nói rằng khi có phân vùng mạng trong hệ phân tán, bạn phải chọn ưu tiên nhất quán hoặc sẵn sàng. Khi mạng khỏe có thể đạt nhiều thuộc tính cùng lúc, nhưng lúc partition xảy ra, trade-off trở thành bắt buộc.

Ý chính

  • Consistency nghĩa là các node thấy cùng dữ liệu; availability nghĩa là request vẫn nhận phản hồi.
  • Partition tolerance không phải lựa chọn trong hệ phân tán thực tế; mạng có thể hỏng nên hệ thống phải chịu được partition.
  • Thiết kế tốt phải nói rõ lúc partition xảy ra hệ thống sẽ từ chối request hay chấp nhận dữ liệu tạm lệch.

Ví dụ từ nguồn

DNS thiên về availability và partition tolerance: server vẫn trả lời khi có phân vùng, dù dữ liệu có thể chưa cập nhật hoàn toàn.

Một hệ thống ngân hàng thường ưu tiên consistency hơn, sẵn sàng từ chối giao dịch nếu không đảm bảo trạng thái tài khoản đúng.

Nguồn gốc

Eric Brewer nêu giả thuyết này năm 2000 trong bối cảnh web service quy mô lớn; Gilbert và Lynch formalize nó năm 2002.

Lưu ý khi áp dụng

Đừng dùng CAP như khẩu hiệu chọn database. Hãy mô tả cụ thể từng operation cần nhất quán hay sẵn sàng trong kịch bản partition nào.

← Quay lại danh sách 56 luật