Queue-based load leveling: thay vì để đỉnh tải đập thẳng vào service xử lý, request được đẩy vào hàng đợi và consumer rút ra ở tốc độ ổn định mà hệ thống chịu được.
Đỉnh tải biến thành độ trễ chứ không thành lỗi.
spike traffic -> API (ghi vào queue, trả 202) -> queue -> workers (throughput ổn định) -> DBHợp với việc không cần trả kết quả ngay: gửi mail/notification, xuất báo cáo, xử lý ảnh/video, đồng bộ sang hệ ngoài. Đổi lại API trả 202 Accepted kèm một id để client tra trạng thái, và luồng nghiệp vụ phải chấp nhận eventual consistency.
Queue dài ra liên tục nghĩa là tốc độ vào lớn hơn tốc độ ra — không phải trục trặc nhất thời mà là thiếu năng lực xử lý. Hậu quả: message chờ quá lâu thì kết quả không còn giá trị, và nếu client vẫn còn chờ thì nó đã timeout và retry, làm hàng đợi phình thêm.
Cách xử lý:
- Backpressure: khi hàng đợi vượt ngưỡng thì từ chối nhận thêm ngay ở tầng nhận, thay vì nhận rồi không xử lý nổi.
- Bỏ việc đã hết hạn: message quá hạn xử lý thì loại bỏ thay vì cố làm.
- Tách hàng đợi theo độ ưu tiên hoặc theo tenant, để một nguồn lưu lượng lớn không chặn phần còn lại.
- Giới hạn số lần retry + dead-letter queue, tránh message hỏng quay vòng vĩnh viễn.
- Có cảnh báo trên tuổi message cũ nhất, không chỉ trên độ dài hàng đợi.