Azure API Management'ta hız sınırlama uygulama
Hız sınırlamayı kullanarak bir kullanıcının veya hizmetin belirli bir zaman diliminde gerçekleştirebileceğ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 (APIM), API'leriniz için hız sınırlaması uygulamak için kullanışlı bir yol sağlar.
Neden Azure API Management?
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 sistem durumunu ve güvenilirliğini korumak için yararlı olan hız sınırlamasını denetlemektir.
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. Belirlediğiniz 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 1000 çağrıya izin vekleyebilirsiniz.
Azure API Management'ta API'nizde hız sınırları tanımlamak için veya rate-limit-by-key
ilkelerini kullanınrate-limit
. İlki tüm kullanıcılar arasında bir sınır ayarlarken, ikincisi tanımlanan anahtar başına sınırlara (abonelik veya kullanıcı kimliği gibi) izin verir.
Aşağıda, çağrıları dakikada 1000 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 yeniden deneyebileceğinizi belirten bir iletiyle retry-after
birlikte 429 Çok Fazla İstek 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 kullanıma sunma
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 ilkeyi rate-limit
ve total-calls-header-name
özellikleriyle remaining-calls-header-name
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>
API'nizi şimdi çağırdığınızda, her yanıt, sınırı aşmadan önce API'nin kaç çağrıyı işleyebileceğinizi bildiren ve ratelimit-limit
üst bilgilerini içerirratelimit-remaining
.
Ö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. Unutmayın, önemli olan doğru dengeyi bulmaktır– çok katıdır ve kullanılabilirliği engelleyebilirsiniz; çok yumuşak ve API'nizi bunaltma riskiyle karşı karşıyasınız. Dikkatli planlama ve sürekli izleme ile bu dengeyi elde edebilir ve iyi durumda bir API ortamını koruyabilirsiniz.