Sebességkorlátozás implementálása az Azure API Management

Sebességkorlátozással korlátozhatja, hogy egy felhasználó vagy szolgáltatás hány API-hívást kezdeményezhet egy adott időkeretben. A sebességkorlátozás segít biztosítani a tisztességes használatot, és megakadályozza, hogy egyetlen felhasználó vagy szolgáltatás monopolizálja az API-erőforrásokat. Az Azure API Management (APIM) kényelmes módot kínál az API-k sebességkorlátozásának megvalósítására.

Miért az Azure API Management?

Az Azure API Management egy hatékony és sokoldalú felhőszolgáltatás, amellyel a szervezetek API-kat tehetnek közzé külső, partneri és belső fejlesztők számára. Eszközöket biztosít az API-hívások biztonságossá tételéhez, kezeléséhez és skálázhatóságához. Egyik funkciója a sebességkorlátozás szabályozása, amely hasznos az API-k állapotának és megbízhatóságának fenntartásához.

Sebességkorlátozás konfigurálása az Azure API Management

Az Azure API Management szabályzatokkal kényszeríti ki a sebességkorlátozást. Ezeket a szabályzatokat különböző hatókörökben határozhatja meg: globális, termék- vagy API-specifikus. Ez a rugalmasság lehetővé teszi, hogy az API követelményeinek és használati mintáinak megfelelően szabja testre a sebességkorlátozást.

Mielőtt elkezdené a sebességkorlátozást, döntse el a díjkorlátokat. A beállított korlátok az API kapacitásától és a várt forgalomtól függnek. A gyakori korlátok másodpercenként, percenként vagy óránként több hívásként vannak beállítva. Például felhasználónként 1000 hívást engedélyezhet percenként.

Az Azure API Management api sebességkorlátjainak meghatározásához használja a vagy rate-limit-by-key a rate-limit szabályzatokat. Az előbbi korlátot állít be az összes felhasználóra vonatkozóan, míg az utóbbi engedélyezi az azonosított kulcsonkénti korlátokat (például egy előfizetést vagy egy felhasználói azonosítót).

Íme egy példa egy olyan szabályzatra, amely percenként 1000-ra korlátozza a hívásokat.

<policies>
  <inbound>
    <base />
    <rate-limit calls="1000" renewal-period="60" />
  </inbound>
  <backend>
    <base />
  </backend>
  <outbound>
    <base />
  </outbound>
  <on-error>
    <base />
  </on-error>
</policies>

Ha túllépi a megadott számú hívást, az Azure API Management 429 Túl sok kérés állapotkódot küld, a retry-after válasz fejlécével és egy üzenettel, amely jelzi, hogy mikor próbálkozhat újra.

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."
}

Sebességkorlát-információk megjelenítése a válaszfejléceken

Alapértelmezés szerint az Azure API Management nem teszi közzé a válaszfejléceken a sebességkorlátra vonatkozó információkat. A sebességkorlátok nem kommunikálása megnehezíti az alkalmazások számára a korlát túllépését és szabályozását. A sebességkorláttal kapcsolatos információk nyilvánosságra hozásához bővítse ki a rate-limit szabályzatot a és total-calls-header-name a remaining-calls-header-name tulajdonságokkal.

<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>

Amikor most meghívja az API-t, minden válasz tartalmazza a és ratelimit-limit a ratelimit-remaining fejléceket, amelyek közlik, hogy az API hány további hívást tud kezelni a korlát túllépése előtt.

Összefoglalás

Az Azure API Management sebességkorlátozásának implementálása segít robusztus és méretezhető API-k létrehozásában. A sebességkorlátozás használatával gondoskodhat arról, hogy az API megbízhatóan és hatékonyan szolgálja ki a felhasználókat. Ne feledje, hogy a kulcs a megfelelő egyensúly megtalálása – túl szigorú, és akadályozhatja a használhatóságot; túl engedékeny, és azt kockáztatja, hogy túlterheli az API-t. Gondos tervezéssel és folyamatos monitorozással ezt az egyensúlyt érheti el, és egészséges API-környezetet tarthat fenn.

Következő lépések