Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Hız sınırlamasını kullanarak, bir kullanıcının veya hizmetin belirli bir zaman diliminde yapabileceği API çağrılarının sayısını sınırlayabilirsiniz. Hız sınırlama, adil kullanım sağlamanıza yardımcı olur ve tek bir kullanıcının veya hizmetin API kaynaklarını tekeline almalarını önler. Azure API Management, API'leriniz için hız sınırlaması uygulamak için kullanışlı bir yol sağlar.
Azure API Management neden kullanılır?
Azure API Management , kuruluşların API'leri dış, iş ortağı ve iç geliştiricilere yayımlamasına yardımcı olan güçlü ve çok yönlü bir bulut hizmetidir. API çağrılarını güvenli hale getirmek, yönetmek ve ölçeklendirmek için araçlar sağlar. Özelliklerinden biri, API'lerinizin sağlığını ve güvenilirliğini korumak için yararlı olan hız sınırlamasını kontrol etmektir.
Azure API Management'ta hız sınırlamayı yapılandırma
Azure API Management, hız sınırlamayı zorlamak için ilkeleri kullanır. Bu ilkeleri farklı kapsamlarda tanımlayabilirsiniz: genel, ürün veya API'ye özgü. Bu esneklik, hız sınırlamayı API'nizin gereksinimlerine ve kullanım desenlerine göre uyarlamanıza olanak tanır.
Hız sınırlamasını uygulamaya başlamadan önce hız sınırlarına karar verin. Ayarladığınız sınırlar API'nizin kapasitesine ve beklediğiniz trafiğe bağlıdır. Ortak sınırlar saniye, dakika veya saat başına çağrı sayısı olarak ayarlanır. Örneğin, kullanıcı başına dakikada 1.000 çağrıya izin verebilirsiniz.
Azure API Management'ta API'nizde hız sınırları tanımlamak için rate-limit veya rate-limit-by-key ilkelerini kullanın. Politika rate-limit , tüm kullanıcılar için bir sınır belirler. İlke rate-limit-by-key , tanımlanan anahtar başına (abonelik veya kullanıcı kimliği gibi) sınırlara izin verir.
Burada, çağrıları dakikada 1.000 ile sınırlayan bir ilke örneği verilmiştir.
<policies>
<inbound>
<base />
<rate-limit calls="1000" renewal-period="60" />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
Belirtilen çağrı sayısını aştığınızda Azure API Management, yanıt üst bilgisi ve ne zaman yeniden deneyebileceğinizi belirten bir iletiyle birlikte 429 Too Many Requests bir retry-after durum kodu gönderir.
HTTP/1.1 429 Too Many Requests
content-type: application/json
retry-after: 60
{
"statusCode": 429,
"message": "Rate limit is exceeded. Try again in 60 seconds."
}
Yanıt üst bilgilerinde hız sınırı bilgilerini göster.
Varsayılan olarak, Azure API Management yanıt üst bilgilerinde hız sınırı bilgilerini kullanıma sunmaz. Hız sınırlarının iletilmemesi, uygulamaların sınırı aşmaktan ve kısıtlanmaktan kaçınmasını zorlaştırır. Hız sınırı bilgilerini kullanıma açmak için rate-limit ilkesini remaining-calls-header-name ve total-calls-header-name özellikleriyle genişletin.
<policies>
<inbound>
<base />
<rate-limit calls="1000" renewal-period="60" remaining-calls-header-name="ratelimit-remaining" total-calls-header-name="ratelimit-limit" />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
Artık API'nizi çağırdığınızda, her yanıt ratelimit-remaining ve ratelimit-limit üst bilgilerini içerir. Üst bilgiler, API'nin sınırı aşmadan önce kaç çağrı daha işleyebileceğini bildirir.
Özet
Azure API Management'ta hız sınırlaması uygulamak, güçlü ve ölçeklenebilir API'ler oluşturmanıza yardımcı olur. Hız sınırlamayı kullanarak API'nizin kullanıcılarınıza güvenilir ve verimli bir şekilde hizmet etmesini sağlayabilirsiniz. Önemli olan doğru dengeyi bulmaktır. Hız sınırı çok katıysa, kullanılabilirliği engelleyebilirsiniz. Bir hız sınırı çok yumuşaksa, API'nizi bunaltma riskiyle karşı karşıya kalırsınız. Dikkatli planlama ve sürekli izleme ile bu dengeyi elde edebilir ve iyi durumda bir API ortamını koruyabilirsiniz.
İstemcilerinizi test edin
API'nizde hız sınırlaması uyguladıktan sonra API'nizi çağıran uygulamaların bunu işlediğini doğrulayın. Bir istemci, rate-limit veya Retry-After tarafından ayarlanan bir sınırı aştığında, API Management, rate-limit-by-key üst bilgisiyle birlikte 429 Too Many Requests döndürür. Bunu yoksayan istemciler yeniden denemeye devam eder ve kısıtlanmış kalır.
| Approach | Bulduklarınız | Kaçırdığınız şeyler |
|---|---|---|
| Üretimi bekleyin | İstemcinin gerçek davranışı | Her bozuk istemci, kullanıcıları sınıra ulaşana kadar |
| İstemcinin testlerinde Mock API Yönetimi | İstemcinin yeniden deneme dalının çalışıp çalışmadığı | Gerçek sınırlarınız, başlıklarınız ve sıfırlama zamanlamanız ve istemcinin gerçek HTTP yığını |
| Kısıtlamaya başlayana kadar API Management örneğinizi çağırın | Gerçek davranış | Bir test örneğine ihtiyacınız var ve çağrıları tüketmeden isteğe bağlı sınıra ulaşamazsınız |
| İstemcinin trafiğini yakalama ve limitlerinizi simüle etme | Gerçek API URL'sindeki sınırınız, pencereniz ve üst bilgileriniz ile istemcinin Retry-After öğesinin belirttiği süre kadar bekleyip beklemediği |
İstemcinin kodu yalıtılmış hâlde. Bunun için birim testlerini koruyun. |
Dev Proxy , yapılandırdığınız hız sınırlama davranışının simülasyonunu aynı sınır, zaman penceresi ve yanıt üst bilgileriyle yaparken istemci uygulaması gerçek API URL'nizi çağırmaya devam eder. ile değerini rateLimit kullanın ve resetTimeWindowSeconds ilkenizin calls ve renewal-periodcostPerRequest olarak ayarlayın 1 (varsayılan değer, sınırınızı yarıya indiren değeridir2) ve headerLimitheaderRemaining ilkenizdeki üst bilgi adlarına ayarlayın.RateLimitingPlugin Dev Proxy'nin bir istemci çok erken tekrar çağrı yaptığında sizi bilgilendirmesi için RetryAfterPlugin öğesini önüne ekleyin. Ayrıntılar için bkz. Oran sınırı API yanıtlarını simüle etme. Geliştirme Proxy'sini yüklemek için bkz. Dev Proxy'yi ayarlama.
- Oran sınırlamasını ele alma: İstemci uygulamaları için en iyi yöntemler