Thông tin chung
Rate Limit
Để bảo vệ các API, hệ thống đã được cài đặt cơ chế Rate Limit để tránh tình trạng một API được gọi liên tục trong một thời gian ngắn, dẫn đến tắt nghẽn hệ thống.
Hệ thống Rate Limit được sử dụng theo thuật toán Leaky Bucket và có Window Time là 3 giây. Tức là trong vòng 3 giây sẽ bị giới hạn các Request theo bảng bên dưới. Sau 3 giây thì sẽ được reset về 0.
Chi tiết giới hạn
Bên dưới là số lượng request tối đa theo Window Time (3 giây) theo từng HTTP Method:
- GET: 30 request / 3 giây
- POST: 15 request / 3 giây
- PUT: 15 request / 3 giây
- DELETE: 3 request / 3 giây
- PATCH, OPTIONS, HEAD, etc.: 30 request / 3 giây
LƯU Ý: Cơ chế Rate Limit này không tác động đến các Inter-service API Call, tức là các microservice trong hệ thống gọi lẫn nhau.
Cách xác định khi bị giới hạn
Khi bị giới hạn, hệ thống sẽ trả về HTTP Status Code là 429.
Ngoài ra, hệ thống còn trả về Header là "X-Rate-Limit-Limit", "X-Rate-Limit-Remaining" và "X-Rate-Limit-Identifier".
- "X-Rate-Limit-Limit": số lượng request có thể gọi trong khoảng thời gian Window Time.
- "X-Rate-Limit-Remaining": số lượng request còn lại trong khoảng thời gian Window Time.
- "X-Rate-Limit-Identifier": tổ hợp của [Địa chỉ IP], [HTTP Method], [Controller] & [JWT Hash].