Hız Sınırlama Algoritmaları
Sabit, kayan, belirteç ve eşzamanlılık sınırlayıcılarını karşılaştırın.
Hız Sınırlama Algoritmaları, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 4 dersten oluşur.
Hız Sınırlama Neden Gerekli?
Hız sınırlama, bir istemcinin belirli bir zaman aralığında yapabileceği istek sayısını sınırlar. API'nizi kötüye kullanımdan, kontrolden çıkan istemcilerden ve yanlışlıkla oluşan trafik artışlarından korur; kapasitenin kullanıcılar arasında adil paylaşılmasını sağlar.
// e.g. allow 100 requests per minute per API keyYerleşik Hız Sınırlama
.NET 7'den beri ASP.NET Core, Microsoft.AspNetCore.RateLimiting içinde dört yerleşik algoritmaya sahip birinci sınıf hız sınırlama ara yazılımı sunar.
// Algorithms: Fixed Window, Sliding Window,
// Token Bucket, ConcurrencySabit Pencere
Sabit pencere algoritması, sabit bir zaman dilimi başına N isteğe izin verir. Dilim sona erdiğinde sayaç sıfırlanır.
Basittir; ancak pencere sınırındaki ani artışlar, etkin hızı kısa süreliğine iki katına çıkarabilir.
// 10 requests per 60s window
// All 10 used at 0:59, 10 more at 1:00 -> 20 in 2 secondsKayan Pencere
Kayan pencere, pencereyi bölümlere ayırıp süresi dolan bölümleri ileri taşıyarak sınır sorununu yumuşatır; böylece sınır, sürekli olan her zaman aralığına uygulanır.
// 10 requests per 60s, 6 segments of 10s each
// The count slides as each segment expiresBelirteç Kovası
Belirteç kovası, belirteçlerden oluşan bir kova tutar. Her istek bir belirteç tüketir; belirteçler sabit bir hızla yenilenir. Uzun vadeli ortalamayı korurken kova boyutuna kadar kısa süreli ani artışlara izin verir.
// Bucket = 10 tokens, refill 5 tokens / 10s
// Burst of 10 allowed, then 5 every 10 secondsEşzamanlılık Sınırlayıcısı
Eşzamanlılık sınırlayıcısı farklı çalışır: zaman birimi başına istek sayısını değil, işlenen isteklerin aynı anda kaç tane olabileceğini sınırlar. Pahalı işlemleri korumak için idealdir.
// At most 5 concurrent requests in flight
// The 6th waits in the queue or is rejectedKuyruk
Her sınırlayıcı, sınırı aşan istekleri hemen reddetmek yerine kuyruğa alabilir. QueueLimit kuyruk boyutunu, QueueProcessingOrder ise adaleti (en eski veya en yeni önce) belirler.
// QueueLimit = 2, OldestFirst
// Over-limit requests wait if a slot exists, else get 503/429Algoritma Seçme
Algoritmayı amacınıza göre seçin:
- Sabit pencere: en basit seçenektir ve birçok durum için yeterlidir.
- Kayan pencere: daha yumuşaktır ve sınırdaki ani artışları önler.
- Belirteç kovası: denetimli ani artışlara izin verir.
- Eşzamanlılık: hızı değil, eşzamanlı yükü sınırlar.
// Bursty clients -> token bucket
// Expensive endpoint -> concurrencyBölümlendirme
Sınırlar genellikle kullanıcı, API anahtarı veya IP olan bölüm anahtarına göre uygulanır; böylece gürültülü tek bir istemci herkesin kotasını tüketemez. Tek bir ortak bölüm, tüm trafiği birlikte sınırlar.
// Partition by user id, IP, or API key
// Each partition gets its own independent counterİstemcinin Gördükleri
Reddedilen bir istek HTTP 429 Too Many Requests döndürür. İyi tasarlanmış bir API ayrıca istemciye ne zaman yeniden denemesi gerektiğini bildiren bir Retry-After üst bilgisi de döndürür.
// HTTP/1.1 429 Too Many Requests
// Retry-After: 30Hız Sınırlama, Kısıtlama ve Kotalar
İlgili kavramlar şunlardır: hız sınırlama kısa vadeli sıklığı, kotalar daha uzun vadeli toplamları (günlük veya aylık), kısıtlama ise reddetmek yerine yavaşlatmayı sınırlar. Ara yazılım, hız sınırlamaya odaklanır.
// rate limit: 100/min quota: 10000/dayKısa Kontrol
Algoritmaları ne kadar kavradığınızı sınayın.
Özet
Hız sınırlama kavramlarını öğrendiniz:
- Dört algoritma vardır: sabit pencere, kayan pencere, belirteç kovası ve eşzamanlılık.
- Belirteç kovası ani artışlara izin verir; eşzamanlılık eşzamanlı yükü sınırlar.
- Sınırlar bölüm anahtarına göre uygulanır; kuyruklar taşmayı yumuşatır.
- Reddedilen istekler,
Retry-Afterile birlikte 429 döndürür.
Sırada: ara yazılımı yapılandırma.
Sıkça Sorulan Sorular
“Hız Sınırlama Algoritmaları” dersi ücretsiz mi?
Evet — “Hız Sınırlama Algoritmaları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 4 dersten oluşur.
“Hız Sınırlama Algoritmaları” dersinde ne öğreneceğim?
Sabit, kayan, belirteç ve eşzamanlılık sınırlayıcılarını karşılaştırın. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C# Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Hız Sınırlama Algoritmaları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Hız Sınırlama Algoritmaları
- Hız Sınırlama Ara Yazılımını Yapılandırma
- Çıktı Önbellekleme Temelleri
- Önbellek İlkeleri ve Geçersiz Kılma