Genel Bakış
API Bazlı Throttling politikası, API’lere gelen isteklerin kısa zaman aralıklarında (saniye, dakika) sınırlandırılmasını sağlar. Bu politika ile:- Belirli bir zaman diliminde izin verilen maksimum istek sayısını kontrol edebilirsiniz.
- Farklı hedefler için özel hız sınırları tanımlayabilirsiniz.
- API’lerinizi aşırı yüklenmeye karşı koruyabilirsiniz.
- Kullanıcı bazında veya değişken bazında hız sınırlaması uygulayabilirsiniz.
Throttling: Kısa süreli (saniye/dakika) hız kontrolü sağlar, sadece cache kullanır, sistem yeniden başlatıldığında sayaçlar sıfırlanır, burst protection ve DDoS koruması için idealdir.Kota: Uzun dönemli (saat/gün/hafta/ay) toplam kullanım limitlerini yönetir, cache + veritabanı kombinasyonu kullanır, kalıcı veri depolama sağlar, faturalama ve abonelik yönetimi için kullanılır.
Amacı Nedir?
- Sistem Koruması ve Kaynak Yönetimi: Backend sistemlerini aşırı yüklenmeye karşı korur, kaynak tükenmesini önler ve sunucu kapasitesinin adil kullanımını sağlar.
- DDoS ve Bot Saldırısı Önleme: DDoS saldırıları, bot trafiği ve kötü niyetli istek bombardımanına karşı sistem güvenliğini sağlar.
- İş Modeli ve SLA Desteği: Farklı kullanıcı segmentleri için özelleştirilmiş hizmet seviyeleri sunar (Free, Premium, Enterprise), servis seviyesi sözleşmelerini yerine getirir.
- Maliyet Kontrolü ve Performans Optimizasyonu: Cloud servis maliyetlerini optimize eder, gereksiz API çağrılarını sınırlar, sonsuz döngü ve yanlış implementasyonları erken tespit eder.
Çalışma Prensibi
- İstek Gelişi: API Gateway’e gelen her HTTP/HTTPS isteği için, istemin kaynak bilgileri (IP, kullanıcı, API key vb.) tespit edilir.
-
Politika Kontrolü: API bazlı Hız Sınırlama politikası aktif ise, sistem aşağıdaki sırayla kontrol yapar:
- Politika aktif mi (active=true)?
- Condition (koşul) tanımlı mı? Varsa koşul sağlanıyor mu?
- Variable kullanılıyor mu yoksa default ayarlarda mı?
-
Throttling Key Oluşturma ve Sayaç Kontrolü: Her istek için benzersiz bir throttling anahtarı oluşturulur (format:
throttling:{policy_id}:{apply_by_value}:{window}). Apply By parametresi varsa (IP adresi, kullanıcı adı, API key vs.), bu değer anahtara dahil edilir. Cache’den mevcut istek sayacı sorgulanır. Detail List tanımlıysa, hedef değer ile karşılaştırılır ve eşleşen kuralın limiti kullanılır, yoksa varsayılan limit uygulanır. -
Karar Verme:
Limit Aşılmadıysa:
- Sayaç 1 artırılır ve cache’e senkron olarak yazılır.
- İstek backend’e iletilir.
- Rate limit statistics aktifse response header’larına kota bilgisi eklenir (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset).
- HTTP 403 hatası dönülür, akış kesilir, hata hattına geçer.
- Cache Error Handling politikası devreye girer (ALLOW: akış devam eder, REJECT: akış kesilir).
- Hata İşleme: Politika kuralına uymayan istekler için özelleştirilebilir HTTP durum kodu ve hata mesajı döndürülür.
Veri Depolama Stratejisi
API Bazlı Throttling politikası, yüksek performans için sadece cache bazlı depolama kullanır: Cache - Tek Katman:- Tüm throttling sayaçları sadece cache’de tutulur.
- Her API isteğinde senkron olarak güncellenir.
- Minimum gecikme ve maksimum performans sağlar.
- Dağıtık sistemlerde tüm Gateway instance’ları aynı sayaçları paylaşır.
- Throttling politikası veritabanına yazma yapmaz.
- Veriler geçicidir ve cache’in TTL (Time-To-Live) süresi dolduğunda otomatik silinir.
- Sistem yeniden başlatıldığında throttling sayaçları sıfırlanır.
- Bu tasarım kısa süreli hız kontrolü için yeterlidir ve maksimum performans sağlar.
Özellikler ve Yetenekler
Temel Özellikler
- Mesaj Sayısı Limiti: Belirli bir zaman diliminde izin verilen maksimum istek sayısını belirler (minimum 1, tam sayı).
- Esnek Zaman Aralığı Desteği: Saniye ve dakika bazında zaman periyotları tanımlama. Periyot uzunluğu çarpanı ile özelleştirilebilir zaman aralıkları (örn: 3 saniye, 5 dakika).
- Apply By Değişkeni: Throttling’in hangi kritere göre uygulanacağını belirler (IP adresi, kullanıcı adı, API Key veya seçeceğiniz herhangi bir header/parametre/body değeri bazlı). Her değişken değeri için ayrı sayaç tutulur.
- Aktif/Pasif Durum Kontrolü: Politikanın aktif veya pasif durumunu kolayca değiştirme (active/passive toggle). Pasif durumda politika uygulanmaz ancak yapılandırması kullanıma hazır şekilde bekler.
- Koşul Bazlı Uygulama: Condition ile politikanın hangi durumlarda uygulanacağını belirleme (örn: sadece belirli endpoint’lere veya header değerlerine göre).
İleri Düzey Özellikler
- Hedef Bazlı Farklı Limitler (Detail List): Belirli kurallara göre belirli limitler belirtmek (kullanıcı seviyeleri, IP aralıkları, API key’ler). Regex desteği ile esnek hedef eşleşmeleri. Her hedef için ayrı mesaj sayısı ve zaman aralığı.
- Interval Window Type Desteği: SLIDING (Kayan Pencere) - Her istek zamanından ileriye doğru pencere uygulanır, daha hassas kontrol sağlanır. FIXED (Sabit Pencere) - Belirli zaman dilimlerinde sayaç sıfırlanır, daha performanslı.
- Cache Bağlantı ve Hata Yönetimi: Cache sunucusu bağlantı timeout süresi ayarlama (saniye). Cache erişilemezse davranış belirleme: ALLOW (kullanılabilirlik öncelikli) veya REJECT (güvenlik öncelikli).
- Rate Limit İstatistikleri: Response header’larında kalan kota bilgisi gösterme (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset). Client’ların kendi kotalarını takip edebilmesi.
- Dağıtık Mimari Desteği: Merkezi cache kullanımı sayesinde birden fazla Gateway instance’ı aynı sayaçları paylaşır. Kullanıcı hangi gateway’e bağlanırsa bağlansın tutarlı hız sınırlama sağlanır.
- Export/Import Özelliği: Politika yapılandırmasını ZIP dosyası olarak export etme. Farklı ortamlara (Development, Test, Production) veya API Proxy’lere import etme.
- Policy Group ve Proxy Group Desteği: Birden fazla politikayı Policy Group içinde yönetme ve Proxy Group içerisinde politika kullanımıyla merkezi güncelleme ve deploy işlemleri.
- Deploy ve Versiyonlama: API Proxy’lerdeki Deployment History özelliği ile versiyonlama yapılması. Global politika veya Policy Group kullanımı ile hangi API Proxy’lerde kullanıldığını görme.
Kullanım Senaryoları
API Bazlı Throttling politikası, API trafiğini yönetmek ve sistem kaynaklarını korumak amacıyla istek oranlarını kontrol eder. Aşağıdaki örnek senaryolar, farklı kullanım durumlarında bu politikanın nasıl uygulanabileceğini göstermektedir. Her senaryo, belirli bir ihtiyaca karşılık gelen konfigürasyon örneğiyle birlikte açıklanmıştır.Politika Parametrelerini Yapılandırma
Bu bölümde, yeni bir API Based Throttling politikasının oluşturulması için kullanılan alanlar ve yapılandırma adımları yer almaktadır. Politika parametreleri, isteklerin hangi ölçüte göre sınırlandırılacağını, zaman penceresinin nasıl hesaplanacağını ve limit aşımlarında sistemin nasıl davranacağını belirler.Yeni API bazlı Hız Sınırlama Politikası Oluşturma

Yapılandırma Adımları
Koşullar ve Hata Mesajı Özelleştirme panellerinin açıklaması için Politika Nedir? sayfasındaki Koşullar ve Hata Mesajı Özelleştirme (Error Message Customization) bölümlerini inceleyebilirsiniz.
Hata mesajı yapılandırmasının tüm katmanları, öncelik sırası ve senaryo örnekleri için Hata Mesajı Yapılandırma Rehberi sayfasına bakın.
Politikayı Silme
Bu politikanın silme adımları ve kullanımdayken uygulanacak işlemler için Politika Yönetimi sayfasındaki Akıştan Politika Kaldırma bölümüne bakabilirsiniz.Politikayı Dışa/İçe Aktarma
Bu politikanın dışa aktarma (Export) ve içe aktarma (Import) adımları için Export/Import sayfasına bakabilirsiniz.Politikayı API’ye Bağlama
Bu politikanın API’lere nasıl bağlanacağına ilişkin süreç için Politika Yönetimi sayfasındaki Politikayı API’ye Bağlama bölümüne bakabilirsiniz.İleri Düzey Özellikler
Bu bölümde kullanıcı, API Based Throttling politikasının gelişmiş yönetim kabiliyetlerini kullanarak daha esnek, dinamik ve kurumsal seviyede kontrol elde eder. Değişken yönetimi, hedefe özel kural tanımları, koşullu aktivasyon ve özelleştirilebilir hata mesajları gibi ileri düzey özellikler sayesinde politikalar dinamik şekilde uyarlanabilir, farklı senaryolara göre optimize edilebilir.İpuçları ve En İyi Uygulamalar
Yapılması Gerekenler ve En İyi Uygulamalar
Throttling ve Kota Politikalarını Birlikte Kullanma
Throttling ve Kota politikaları birbirini tamamlar ve birlikte kullanıldığında en etkili koruma sağlar: Throttling (Kısa Vadeli Koruma):- Saniye/dakika bazlı hız kontrolü
- Burst saldırılarını anında engeller
- Sadece cache kullanır, maksimum performans
- Sistem yeniden başlatmalarından etkilenir
- Saat/gün/ay bazlı toplam kullanım kontrolü
- Faturalama ve abonelik yönetimi
- Cache + veritabanı, kalıcı veri
- Raporlama ve analitik desteği

