Yêu cầu: get/put theo key, độ trễ thấp, luôn ghi được (high availability), scale ngang, chịu lỗi node.
Thành phần chính:
- Partitioning: consistent hashing chia key-space thành một vòng tròn; thêm virtual node để cân bằng tải và giảm reshuffle khi thêm/bớt máy.
- Replication: mỗi key nhân bản sang N node kế tiếp trên vòng (preference list).
- Quorum: ghi thành công khi đủ W node ack, đọc khi đủ R node phản hồi; chọn W + R > N để đọc luôn thấy bản ghi mới nhất.
- Conflict resolution: vector clock đánh dấu phiên bản; khi phân nhánh thì trả về client hòa giải hoặc last-write-wins.
- Membership & failure detection: gossip lan truyền trạng thái node; hinted handoff + Merkle tree để đồng bộ lại sau khi node hồi phục.
Đánh đổi / bottleneck: W+R>N thiên về nhất quán nhưng tăng độ trễ; mô hình AP (eventual consistency) đổi tính nhất quán lấy availability; hot key vẫn làm lệch tải dù đã virtual node — cần thêm cache tầng trên hoặc tách key.