Preview Bản nháp chờ review — title, nội dung, link có thể sửa trước khi bỏ nhãn.

Hot key hết hạn đúng giây. 2000 request miss → 2000 query DB giống hệt. DB gục; cache không kịp set lại. Gần thundering herd đội lốt cache.

Demo ý tưởng (đồng loạt miss vs single-flight): stampede vs coalesce.

Vì sao xảy ra

  • TTL cứng cùng một timestamp cho mọi key nóng.
  • Không lock/coalesce khi miss.
  • Retry/stampede chồng retry.

Chữa

  • Single-flight / request coalescing per key: 1 miss → 1 compute, caller khác await cùng Promise.
  • Soft TTL / stale-while-revalidate: phục vụ stale ngắn, một path refresh.
  • Jitter expiry: TTL ± random để không hết hạn đồng loạt.
  • Probabilistic early refresh: trước hết hạn, thỉnh thoảng refresh.
  • Bound in-flight compute per key.

Một câu

Miss đồng loạt đắt hơn miss lẻ — coalesce trước khi đập DB.
TTL cứng không jitter là hẹn giờ stampede.