Definisi dan Fungsi Utama
API Rate Limiting adalah mekanisme kontrol trafik yang membatasi jumlah permintaan (request) yang dapat dilakukan pengguna atau klien ke server dalam jangka waktu tertentu. Tujuannya adalah mencegah penyalahgunaan API, melindungi server dari serangan DoS (Denial of Service), serta memastikan ketersediaan layanan bagi seluruh pengguna.
Algoritma Utama Rate Limiting
Berikut adalah algoritma standar industri yang digunakan untuk mengimplementasikan pembatasan trafik:
| Algoritma | Cara Kerja | Kelebihan | Kekurangan |
|---|---|---|---|
| Fixed Window | Membatasi request dalam jendela waktu tetap (misal: 100 req/menit). | Sederhana, hemat memori. | Lonjakan trafik di batas jendela waktu. |
| Sliding Window Log | Melacak timestamp setiap request dalam log. | Akurasi sangat tinggi. | Konsumsi memori besar. |
| Sliding Window Counter | Kombinasi fixed window dan bobot jendela sebelumnya. | Efisiensi memori dan akurasi seimbang. | Estimasi, bukan presisi mutlak. |
| Token Bucket | Bucket berisi token; setiap request mengambil 1 token. | Mendukung burst trafik. | Kompleksitas implementasi. |
| Leaky Bucket | Request diproses dengan laju konstan (seperti air bocor). | Output trafik stabil. | Tidak mendukung burst trafik. |
Implementasi Teknis (Contoh Kode: Token Bucket)
Berikut adalah contoh implementasi logika dasar Token Bucket menggunakan Python untuk membatasi request:
import time
class TokenBucket:
def __init__(self, capacity, fill_rate):
self.capacity = capacity
self.fill_rate = fill_rate
self.tokens = capacity
self.last_fill = time.time()
def consume(self, tokens=1):
now = time.time()
elapsed = now - self.last_fill
self.tokens = min(self.capacity, self.tokens + elapsed * self.fill_rate)
self.last_fill = now
if self.tokens >= tokens:
self.tokens -= tokens
return True
return FalseStrategi Implementasi di Lapangan
Dalam arsitektur sistem modern, rate limiting biasanya diterapkan pada beberapa lapisan:
- API Gateway: Menggunakan Nginx, Kong, atau AWS API Gateway untuk memfilter trafik sebelum mencapai backend.
- Distributed Caching: Menggunakan Redis untuk menyimpan counter request secara terpusat agar sinkron di banyak instance server.
- HTTP Status Codes: Selalu gunakan status
429 Too Many Requestssaat batas terlampaui. Sertakan headerRetry-Afteruntuk memberi tahu klien kapan mereka bisa mencoba kembali.
Tips Troubleshooting
- Monitoring: Pantau metrik 429 error secara real-time untuk mendeteksi potensi serangan atau bug pada klien.
- Tiered Limits: Terapkan limit berbeda berdasarkan level autentikasi (misal: user gratis vs user premium).
- Graceful Degradation: Pastikan sistem memberikan pesan error yang informatif agar integrasi pihak ketiga tidak rusak secara mendadak.
🔍 Orang Lain Juga Mencari Ini
Api Rate Limiting Redis
Implementasi Token Bucket
Http 429 Status Code
Api Gateway Rate Limiting
Nginx Rate Limiting Configuration
Distributed Rate Limiting
Api Throttling Vs Rate Limiting
Sliding Window Algorithm Api
Mencegah Ddos Dengan Rate Limiting
Api Security Best Practices
Rate Limiting Header Retry-after
Skalabilitas Api
Api Traffic Management
Rate Limiting Python
Api Usage Quota