Backend nền tảng
C5 · Consistent Hashing
Vòng hash (hash ring) + virtual node để phân bố đều.
C5 · Nâng cao
Xếp các server lên một mặt đồng hồ. Mỗi key đi theo chiều kim đồng hồ đến server gần nhất. Thêm/bớt 1 server chỉ ảnh hưởng một đoạn nhỏ trên đồng hồ.
Cốt lõi
- Vòng hash (hash ring) + virtual node để phân bố đều.
- Tránh phải hash lại toàn bộ khi thêm/bớt server (khác với hash % N).
- Chỉ ~1/N key phải di chuyển khi thay đổi số node.
Đánh đổi
Dùng khi scale ngang cache/DB không downtime. Virtual node giúp giảm hot spot.
Trong thực tế
AWS DynamoDB, Cassandra, CDN, Load Balancer.
Bug thường gặp
Chia key bằng hash(key) % N; thêm một node cache → gần như mọi key bị miss, DB bị dội tải.
Tự hỏi lại
Vì sao cần virtual node? Nếu một node nóng (hot key) thì làm gì?