Docs học tập
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ì?

On this page