Họ đang đo gì
Bạn có dùng CAP để BIỆN LUẬN cho một thiết kế không, hay chỉ đọc thuộc ba chữ cái.
Trả lời ngắn~30 giây
CAP nói một hệ phân tán không thể đồng thời có nhất quán, sẵn sàng và chịu được phân mảnh. Nhưng phân mảnh mạng không phải thứ bạn chọn — nó xảy ra — nên lựa chọn thật chỉ còn giữa C và A KHI phân mảnh xảy ra. PACELC bổ sung phần quan trọng hơn: kể cả khi KHÔNG phân mảnh (Else), bạn vẫn phải chọn giữa độ trễ và tính nhất quán. Đó là lựa chọn bạn trả tiền cho mỗi request, chứ không phải mỗi vài năm một lần.
Người dùng lưu hồ sơ. Primary commit và trả về thành công ngay.
Giải thích sâu
Cách dùng CAP đúng trong một buổi phỏng vấn không phải là tuyên bố “hệ này là AP”. Nó là chỉ ra rằng các phần KHÁC NHAU của cùng một hệ chọn khác nhau: số dư tài khoản cần CP vì trừ tiền hai lần là không chấp nhận được, còn số lượt xem của bài viết thì AP hoàn toàn ổn vì lệch vài chục lượt trong ba giây chẳng ai thấy. Nói được điều đó cho thấy bạn coi nó là công cụ phân tích chứ không phải nhãn dán.
Phần “Else” của PACELC là chỗ tiền thật được tiêu. Muốn đọc luôn thấy dữ liệu mới nhất thì hoặc đọc từ primary (tập trung tải, tăng độ trễ khi ở xa) hoặc chờ quorum (thêm một vòng mạng). Chấp nhận dữ liệu trễ vài trăm mili giây thì đọc được từ bản sao gần nhất. Với dịch vụ có người dùng ở nhiều châu lục, khác biệt này là 20ms so với 200ms — đủ lớn để ảnh hưởng tới chỉ số kinh doanh.
Một chi tiết đáng nói để tránh dùng CAP sai: “nhất quán” trong CAP là linearizability, chặt hơn nhiều so với nghĩa thông thường. Rất nhiều hệ tự gọi là CP thực ra chỉ cung cấp nhất quán tuần tự hoặc nhất quán nhân quả. Biết rằng có cả một PHỔ chứ không phải hai lựa chọn là dấu hiệu của người đã đọc kỹ chứ không chỉ đọc tiêu đề.
Câu hỏi tiếp theo họ sẽ hỏi
?Quorum R + W > N nghĩa là gì?
Với N bản sao, nếu số bản đọc cộng số bản ghi lớn hơn N thì hai tập chắc chắn giao nhau, nên phép đọc luôn chạm ít nhất một bản có bản ghi mới nhất. N=3, W=2, R=2 là cấu hình phổ biến: chịu được một node chết mà vẫn đọc đúng. Đặt W=1 để ghi nhanh thì bạn cần R=3 để bù, và lúc đó một node chết là không đọc được nữa.
Trả lời thế này là mất điểm
- Nói “chúng ta chọn CA”. Không có hệ phân tán nào là CA — bỏ P nghĩa là chạy trên một máy.
- Gán một nhãn cho cả hệ thống. Các thành phần khác nhau chọn khác nhau, và chỉ ra điều đó mới là câu trả lời hay.