dev-tools

Rate Limiting (Hız Sınırlama)

Rate limiting, bir istemcinin (bir kullanıcı, bir API anahtarı veya bir IP adresi) belirli bir zaman penceresi içinde bir sisteme kaç istek yapabileceğini kontrol etme tekniğidir — örneğin "dakikada 100 istek"; bu sınırın ötesindeki istekler genellikle bir HTTP `429 Too Many Requests` yanıtıyla reddedilir veya geciktirilir. İki ilişkili ama farklı amaca hizmet eder: altyapıyı aşırı yüklenmekten korumak (gerçek bir trafik artışından veya bir istemcinin bir endpoint'i retry döngüsünde dövmesine neden olan bir hatadan kaynaklansın) ve iş/fiyatlandırma katmanlarını uygulamak (ücretsiz katman bir API anahtarı dakikada 60 istekle sınırlıyken ücretli bir katman dakikada 6.000 alabilir). AI/SaaS kuran ekipler için neden önemli: rate limiting, bir API'nin ölçülen bir maliyetin arkasında durduğu her yerde esastır — bu özellikle AI destekli endpoint'ler için geçerlidir, çünkü tek bir LLM API çağrısı, tipik bir veritabanı okumasından anlamlı ölçüde daha fazla compute maliyetine mal olabilir; bu yüzden rate limiting'i olmayan bir AI endpoint'i, bir istemci (veya bir hata, ya da kötü niyetli bir aktör) onu sıkı bir döngüde çağırırsa doğrudan, sınırsız bir maliyet riski oluşturur. Ayrıca genel olarak üçüncü tarafa açık API'ler için de standart bir pratiktir; hem kötüye kullanımı önlemek hem de monetizasyon için doğal katmanlama yaratmak amacıyla (rate limit'ler, ücretsiz bir planı ücretli bir plandan ayırmanın en basit, en yaygın yollarından biridir). Nasıl çalışır: yaygın algoritmalar arasında token bucket (her istemcinin sabit bir oranda yenilenen bir kovası vardır — diyelim ki saniyede bir token, en fazla 60'a kadar — ve her istek bir token tüketir; böylece kova boyutuna kadar patlamalara izin verirken sabit bir ortalama oranı da zorlar) ve sliding window (yuvarlanan bir zaman penceresindeki istekleri sayar; bir pencere sınırında tam olarak bir patlamaya izin verebilen basit bir sabit pencere sayımından daha hassastır) bulunur. Rate limiter, kullanım durumunu istemci başına izler (tipik olarak API anahtarı veya kimliği doğrulanmış kullanıcı kimliğiyle anahtarlanır, kontrolün minimal gecikme eklemesi için Redis gibi hızlı bir bellek-içi depoda tutulur) ve yapılandırılan sınırı aşan istekleri reddeder; genellikle iyi davranan istemcilerin zarifçe geri çekilmesini sağlamak için `X-RateLimit-Remaining` ve `Retry-After` başlıkları da eklenir. Örnek üzerinden: bir SaaS şirketinin AI destekli belge özetleme API'si, altta yatan LLM'e her çağrı için onlara gerçek para mal oluyor. API gateway'lerinde bir rate limit belirliyorlar: ücretsiz katman API anahtarları dakikada 10 istekle, ücretli katman anahtarları dakikada 500 istekle sınırlı; her API anahtarı için Redis destekli bir token bucket ile takip ediliyor. Ücretsiz katmandaki bir müşterinin entegrasyonunda başarısız bir isteği sıkı bir döngüde retry eden bir hata olduğunda, rate limiter bunu o dakika içindeki 10. istekten sonra yakalar; hatalı döngünün yüzlerce pahalı AI API çağrısı biriktirmesine izin vermek yerine `Retry-After: 45` başlığıyla `429 Too Many Requests` döndürür — bu, şirketin marjlarını korur ve müşterinin istemcisine tam olarak ne zaman retry yapması gerektiğine dair net, makine tarafından okunabilir bir sinyal verir.

İlgili terimler

Daha fazla Geliştirici Araçları terimi