Azure API Management'de 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ırlama uygulamak için kullanışlı bir yol sağlar.

Azure neden 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ın güvenliğini sağlamaya, yönetmeye ve ölçeklendirmeye yönelik 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'de hız sınırlamayı yapılandırma

Azure API Management, hız sınırlamayı zorunlu kılmak 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ırlamayı 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'da 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 izin verir (abonelik veya kullanıcı kimliği gibi).

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 ne zaman yeniden deneyebileceğinizi retry-after belirten bir iletiyle 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 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 genişletinremaining-calls-header-name.

<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'de 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ı ve kullanılabilirliği engelleyebilirsiniz; çok yumuşak ve API'nizi bunaltma riskiyle karşı karşıyasınız. Dikkatli planlama ve sürekli izleme sayesinde bu dengeyi elde edebilir ve iyi durumda bir API ortamı sağlayabilirsiniz.

Sonraki adımlar