Rate Limit Pattern
Rate limiting adalah teknik untuk membatasi jumlah permintaan (requests) dalam periode waktu tertentu guna:
Mencegah penyalahgunaan API (misalnya DDoS atau brute force).
Melindungi performa server agar tidak overload.
Membagi resource secara adil di antara pengguna.
Perbedaan Rate Limit dengan Semaphore:
Membatasi
Jumlah request dalam waktu tertentu
Jumlah goroutine aktif
Penerapan
Berbasis waktu (misal: 10 req/detik)
Berbasis concurrency (misal: 5 goroutine berjalan bersamaan)
Penggunaan
API rate limiting
Kontrol parallelism
Jenis-Jenis Rate Limiting
Fixed Window → Memeriksa jumlah request dalam interval tetap (misal: 10 request per menit).
Sliding Window → Menghitung request dalam periode berjalan agar lebih akurat.
Token Bucket → Menggunakan token yang diisi secara periodik (misalnya, 10 token per detik, 1 request = 1 token).
Leaky Bucket → Request masuk dalam antrian, diproses secara tetap untuk menghindari lonjakan tiba-tiba.
Implementasi Simple Rate Limit
Berikut adalah implmentasi rate limit sederhana menggunakan token bucket.
Di middleware bisa memanggil paket rate limiter
Kesimpulan
✅ Rate Limiting berguna untuk:
Mencegah abuse/DDoS dengan membatasi jumlah request per waktu tertentu.
Menjaga performa server agar tidak overload.
Mengontrol penggunaan API agar lebih adil untuk semua pengguna.
🚀 Gunakan rate limiting jika Anda ingin membatasi jumlah request dalam periode waktu tertentu!
Last updated
Was this helpful?