Hot partition là tình trạng một shard/partition nhận phần lớn lưu lượng dù dữ liệu đã được chia đều; hot key là một khoá đơn lẻ bị đọc hoặc ghi với tần suất vượt xa phần còn lại. Hình dung một sản phẩm flash sale: hàng nghìn shard rảnh rỗi, một shard chạm trần.
Phát hiện: đo theo từng partition chứ không chỉ trung bình toàn cụm — CPU/latency lệch hẳn ở một node, redis-cli --hotkeys, log top-N key theo tần suất, hoặc metric per-shard của kho dữ liệu.
Xử lý theo loại tải:
- Đọc nóng: cache ngay tại tầng ứng dụng (in-process, TTL vài giây) để cắt đa số request trước khi chạm kho dữ liệu; hoặc nhân bản khoá thành
key#0..key#Nvà đọc ngẫu nhiên một bản, trải trên nhiều node. - Ghi nóng: salting — thêm hậu tố ngẫu nhiên vào khoá partition (
product123#7) rồi gộp lại lúc đọc; hoặc gom ghi theo lô (đếm cục bộ, flush định kỳ) thay vì cộng từng lần vào một dòng. - Về mặt kiến trúc: đưa đỉnh tải vào queue và xử lý tuần tự với thông lượng kiểm soát được; shuffle sharding để một khách hàng nóng không chiếm trọn tài nguyên của mọi khách hàng khác.
Đánh đổi phải nói rõ: salting và nhân bản khoá làm đọc phức tạp hơn (phải gộp N mảnh), cache TTL ngắn khiến dữ liệu có thể cũ vài giây. Chọn theo yêu cầu nghiệp vụ — đếm lượt xem chấp nhận trễ, trừ tồn kho thì không.