JuniorKỹ thuậtĐánh đổi kiến trúc
Giải thích định lý CAP kèm một ví dụ
Thử trả lời trước
Đáp án mẫu
Định lý CAP nói rằng một kho dữ liệu phân tán không thể đồng thời đảm bảo cả ba điều sau khi mạng bị phân vùng:
- Consistency (nhất quán): mọi lần đọc đều thấy lần ghi gần nhất (linearizability).
- Availability (sẵn sàng): mọi yêu cầu gửi đến một nút đang hoạt động đều nhận phản hồi không lỗi.
- Partition tolerance (chịu phân vùng): hệ thống vẫn hoạt động khi các thông điệp giữa các nút bị mất hoặc trễ.
Mạng có thể hỏng, nên chịu phân vùng không phải là tuỳ chọn trong hệ phân tán. Lựa chọn thực sự là bỏ gì khi phân vùng xảy ra: nhất quán hay sẵn sàng.
Ví dụ: hai trung tâm dữ liệu giữ bản sao số dư tài khoản và đường truyền giữa chúng bị đứt. Hệ CP từ chối ghi (hoặc đọc) ở phía thiểu số để tránh giá trị xung đột, nên một số yêu cầu bị lỗi. Hệ AP vẫn phục vụ cả hai phía, chấp nhận chúng có thể lệch nhau và phải đối soát sau.
Khi không có phân vùng, có thể có cả hai, nhưng vẫn có đánh đổi giữa độ trễ và tính nhất quán (phần mở rộng PACELC).
Ý chính
- Khi có phân vùng, phải chọn giữa nhất quán và sẵn sàng
- Chịu phân vùng không phải là tuỳ chọn trong hệ phân tán
- CP từ chối yêu cầu để đúng; AP phục vụ dữ liệu có thể cũ
Câu hỏi nối tiếp thường gặp
- Bạn chọn CP hay AP cho giỏ hàng và cho sổ cái ngân hàng?
- PACELC bổ sung điều gì cho CAP?
Lỗi thường gặp
- Nói rằng có thể chọn hai trong ba như một lựa chọn cố định
- Nhầm nhất quán trong CAP với nhất quán trong ACID