Bài viết liên quan
Rate Limiting & Throttling API ngân hàng
Rate Limiting & Throttling in Banking API
Rate Limiting & Throttling trong API ngân hàng là gì?
Rate Limiting là cơ chế giới hạn số lượng request API được phép gửi đến hệ thống ngân hàng trong một khoảng thời gian nhất định, nhằm ngăn chặn quá tải, tấn công DDoS và đảm bảo công bằng giữa các đối tác. Throttling là hành động tự động giảm tốc độ xử lý hoặc từ chối request khi client vượt ngưỡng cho phép.
4 thuật toán phổ biến
- Fixed Window: đếm request trong 1 phút cố định (100 req/phút từ 10:00:00 - 10:01:00). Đơn giản nhưng dễ bị burst ở biên giờ.
- Sliding Window: trượt cửa sổ theo thời gian thực, chính xác hơn, triển khai bằng Redis sorted set.
- Token Bucket: bổ sung token theo tốc độ R, request lấy 1 token; phù hợp cho traffic bùng nổ.
- Leaky Bucket: xử lý request với tốc độ không đổi, làm mượt traffic đầu vào.
Cấu hình thực tế tại ngân hàng Việt Nam
Một ngân hàng top 4 tại VN cấu hình: 100 req/giây/TPP cho API tra cứu thông tin; 20 req/giây/TPP cho API thanh toán; 5000 req/phút/IP cho app mobile nội bộ; 10 req/giây/user cho API xác thực OTP. Khi vượt ngưỡng, hệ thống trả HTTP 429 Too Many Requests kèm header Retry-After: 30.
Các HTTP header chuẩn trong response
-
X-RateLimit-Limit: 100— tổng quota trong window hiện tại. -
X-RateLimit-Remaining: 23— số request còn lại được phép. -
X-RateLimit-Reset: 1700000060— Unix timestamp reset window.
Ví dụ tình huống thực tế
15h ngày 25 hàng tháng — ngày trả lương, MoMo đồng thời gọi 200 req/giây để truy vấn lương nhân viên 50 doanh nghiệp. API Gateway VietcomBank phát hiện vượt 100 req/giây, tự động throttle: 50% request bị trả về 429, 50% còn lại được xử lý. MoMo phải retry theo backoff 1s, 2s, 4s. Nhờ rate limiting, Core Banking không bị sập và SLA 99.9% được đảm bảo cho 200 TPP khác đang kết nối đồng thời.