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

Backpressure: làm chậm producer khi consumer không kịp — đẹp khi bạn control cả hai đầu.

Internet user / mobile app: bạn không bảo họ “chậm lại”. Khi inventory đầy, latency đã vỡ — load shedding = từ chối có chủ đích để phần còn lại còn dùng được.

Vì sao nhận thêm là hại

  • Queue vô hạn: mọi request chậm — “công bằng” cùng khổ.
  • Retry client đập thêm — storm.
  • Hết budget hàng loạt: work mồ côi nếu không cancel.

Shed sớm: một phần 503 nhanh; phần còn lại p99 chấp nhận được.

Khi nào shed

  • In-flight / queue depth / heap / CPU / event loop lag quá ngưỡng.
  • Dependency breaker đỏ + không có fallback hữu ích.
  • Bulkhead khoang đầy — đừng tràn sang khoang khác.

Cách shed

503 Service Unavailable + Retry-After
429 khi đúng là quota user (rate limit)
Từ chối low-priority / batch trước (priority queue)
Shed ở edge (gateway) — đừng để vào app rồi mới chết
Fail-fast: đừng giữ connection “cho lịch sự”
// Ý edge/app
if (inflight >= MAX || eventLoopLag > THRESH) {
  res.setHeader('Retry-After', '2')
  return res.status(503).json({ error: 'overloaded' })
}

Khi không shed

  • Còn headroom — đừng 503 “phòng hờ” giết conversion.
  • Path critical đã bulkhead riêng: shed nice-to-have trước, không cắt auth/pay sớm hơn policy.
  • Client không retry được và không có UX rõ — ưu tiên degrade (cached/stale) hơn hard fail nếu product cho phép.

Shed vs rate limit vs pool

  • Rate / pool: trần bình thường.
  • Shed: phản ứng quá tải — có thể aggressive hơn quota ngày thường.

Product / SLO

Shed làm tăng error rate có kiểm soát. Nói với product: “từ chối 5% còn hơn 100% request 30s”. Liên quan error budget.

Một câu để nhớ

Giữ 80% request tốt còn hơn 100% request cùng chậm chết.
Shed là van an toàn — không phải bất lịch sự.