Skip to main content
Bu doküman spesifik bir politikanın detaylı kullanımını anlatır. Eğer Apinizer politika yapısını ilk kez kullanıyorsanız veya politikaların genel çalışma prensiplerini öğrenmek istiyorsanız, öncelikle Politika Nedir? sayfasını okumanızı öneririz.

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

  1. İ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.
  2. 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ı?
  3. 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.
  4. 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).
    Limit Aşıldıysa:
    • HTTP 403 hatası dönülür, akış kesilir, hata hattına geçer.
    Cache’e erişim hatası olursa:
    • Cache Error Handling politikası devreye girer (ALLOW: akış devam eder, REJECT: akış kesilir).
  5. 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.
⚠️ Önemli: Veritabanı Kullanımı Yoktur
  • 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

API Bazlı Hız Sınırlama Politikası

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
Kota (Uzun Vadeli Koruma):
  • Saat/gün/ay bazlı toplam kullanım kontrolü
  • Faturalama ve abonelik yönetimi
  • Cache + veritabanı, kalıcı veri
  • Raporlama ve analitik desteği
Örnek Kombinasyon:
Bu sayede hem anlık saldırılara hem de uzun vadeli kötüye kullanıma karşı korunmuş olursunuz.

Güvenlik En İyi Uygulamaları

Kaçınılması Gerekenler

Performans İpuçları

Sık Sorulan Sorular (SSS)