Rate limiting nedir? Token bucket ve sliding window algoritmalarını açıklayın.
Cevap
Rate limiting, bir istemcinin belirli sürede yapabileceği istek sayısını sınırlar. Amaç: kötüye kullanımı ve brute force'u önlemek, sistemi aşırı yükten korumak, kullanım planlarını (free/pro) uygulamak.
Algoritmalar
Fixed window: her dakika için bir sayaç. Basit, ama pencere sınırında patlamaya izin verir (00:59'da 100, 01:00'da 100 istek = 1 saniyede 200).
Sliding window log: her isteğin zaman damgası saklanır, son 60 saniyedekiler sayılır. Kesin ama bellek maliyeti yüksek.
Sliding window counter: önceki ve mevcut pencere sayaçlarının ağırlıklı ortalaması. Az bellekle iyi yaklaşım: tahmini = mevcut + onceki * (pencerede kalan oran)
Token bucket: kova sabit hızla token ile dolar (ör. saniyede 10), kapasitesi sınırlıdır (ör. 100). Her istek bir token harcar; token yoksa reddedilir. Kısa patlamalara (burst) izin verirken ortalama hızı sınırlar. AWS ve Stripe gibi birçok API bunu kullanır.
Leaky bucket: istekler kuyruğa girer ve sabit hızla işlenir; çıkışı düzleştirir.
Dağıtık ortamda uygulama
Birden çok sunucu varsa sayaç paylaşılmalıdır; genelde Redis kullanılır. Yarış durumunu önlemek için işlem atomik olmalıdır:
-- Redis Lua: fixed window, atomik
local n = redis.call("INCR", KEYS[1])
if n == 1 then redis.call("EXPIRE", KEYS[1], ARGV[1]) end
return nAPI davranışı
- Limit aşılınca
429 Too Many RequestsveRetry-Afterbaşlığı dönün. - Kalan kotayı başlıklarla bildirin:
RateLimit-Limit,RateLimit-Remaining,RateLimit-Reset. - Anahtarı amaca göre seçin: API key, kullanıcı ID veya IP (login gibi uçlarda IP + kullanıcı adı).
- Katmanlı uygulayın: API gateway / Nginx seviyesinde kaba limit, uygulamada iş kuralına özel limit.
İlgili API Tasarımı soruları
- HTTP 401 ile 403 durum kodları arasındaki fark nedir?
- JWT nedir? Session tabanlı kimlik doğrulamadan farkı nedir?
- Idempotency nedir? Hangi HTTP metotları idempotent'tir?
- OAuth 2.0 nedir? Authorization Code (PKCE) ve Client Credentials akışları nasıl çalışır?
- gRPC nedir? REST'ten farkı nedir ve ne zaman tercih edilir?
- Webhook nedir? Güvenilir ve güvenli bir webhook sistemi nasıl tasarlanır?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.