Bu senaryoda Apinizer üzerinde oluşturulan Mock API'ye API Based Throttling politikasının uygulanması test edilecektir.

Servisler için throttling kullanmak aşırı yüklenmeyi önlemeyerek istek miktarını sınırlama yöntemidir.

Senaryoda, gelen istekleri 5 dakikalık eşit zaman aralıklarına bölerek her 5 dakikada yalnızca 10 isteğin kabul edilmesini sağlayabiliriz.


Mock api örneği oluşturup politikayı ekleyelim.

Politika olarak API Based Throttling ekliyoruz.


Senaryoda, gelen istekleri Fixed Window (Sabit Pencere) yöntemiyle 5 dakikada 10 istekle sınırlayalım.

  • Eğer periyot 5 dakika olarak ayarlanmışsa ve örneğin politika saat 12:00:00'da kaydedildiyse:
  • 12:00:00 ile 12:04:59 arasındaki istekler aynı pencerede sayılır.
  • 12:05:00'da yeni bir pencere başlar ve sayaç sıfırlanır.


 



AlanAçıklama

Show Rate Limit Statistics in Response Header

Aktifleştirilir ise yanıt başlığındaki oranı sınırı istatistiklerini gösterir.
Permitted Message Countİzin verilen istek sayısıdır. Bu senaryoda 10 olarak belirledik.
Interval Time AmountSeçilen zaman birimine göre belirlenen periyottur. Bu senaryoda 5 olarak belirledik.
Interval Time UnitZaman birimi. Bu senaryoda dakika olarak belirledik.

Her hedef için özel throttling sınırları tanımlanır.
Interval Window TypeZaman aralığını uygulamak için kullanılan yöntem. Fixed türünde 5 dakikalık zaman periyotları.
Cache Connection Timeout (Second)Politika ile cache arasındaki bağlantı için bağlantı zaman aşımı değerini belirtin.

Cache ile bağlantı problemi yaşanırsa, hata döndürmesi (Fail seçilir) veya istek kısıtı uygulanmadan devam etmesi (Continue seçilir) durumu belirlenir.


Test konsolundan örnek istek attığımızda, mevcut zamanda saat 14:00:00 ve 14:04:59 zaman aralığında 10. istek sonrasında kısıtlama sınırına ulaşıldığı için, mesaj engellendi.

Target-Specific Throttling Rules (Hedefe Özel Throttling Kuralları)

Bu özellik sayesinde belirli kullanıcılar veya hedefler için özel throttling sınırlamaları tanımlayabilirsiniz.

Politika olarak API Based Throttling ekliyoruz.

  • Target-Specific Throttling Rules (Hedefe Özel Throttling Kuralları) kullanarak kullanıcı bazlı (header, body veya başka bir alana göre) özel kota sınırları belirlenebilmektedir. Genel politikada gelen istekleri Fixed Window (Sabit Pencere) yöntemiyle 5 dakika için 100 istekle sınırlarken, aynı zamanda user1 kullanıcısı için 5 dakikada maksimum 5 istek limiti tanımlanabilmektedir.

  • Fixed Window yönteminde eğer periyot 5 olarak ayarlanmışsa ve dakika seçilmişse:
  • Örneğin, politika saat 12:00:00'de kaydedildiyse, bu politika bulunduğunuz gün içinde saat 12:00:00 ile 12:04:59 arasında geçerli olacaktır ve bu süre içinde genel kural olarak 100 istek yapılabilir.
  • Target-Specific Quota Rules ile tanımladığımız user1 kullanıcısı için ise dakika bazında bir limit belirlenmiştir. Eğer bir 5 dakikalık dilim 12:00:00'da başlıyorsa, bu 12:00:00 ile 12:04:59 arasındaki süreyi kapsar ve user1 kullanıcısı bu zaman aralığında en fazla 5 istek yapabilir. Sonraki 5 dakikalık dilimde (12:05:00) sayaç sıfırlanır.
  • Bir sonraki 5 dakikalık dilimde (örneğin 12:05:00 ile 12:09:59 arasında) genel politika için yeni bir 100 istek hakkı tanımlanırken, user1 kullanıcısı için de yeniden 5 istek hakkı tanımlanacaktır.

Test konsolundan örnek istek attığımızda, username Header'ından user1 kullanıcısı ile istek attığımızda mevcut saatte 12:00:00 ile 12:04:59 zaman aralığında 5. istek sonrasında kısıtlama sınırına ulaşıldığı için, mesaj engellendi.