Háttérrendszerek az API Managementben

A KÖVETKEZŐRE VONATKOZIK: Minden API Management-szint

Az API Management háttérrendszere (vagy API-háttérrendszere) egy HTTP-szolgáltatás, amely implementálja az előtérbeli API-t és annak műveleteit.

Bizonyos API-k importálásakor az API Management automatikusan konfigurálja az API-háttérrendszert. Az API Management például a háttér webszolgáltatást konfigurálja importáláskor:

Az API Management más Azure-erőforrások API-háttérrendszerként való használatát is támogatja, például:

A háttérrendszer előnyei

Az API Management támogatja a háttérbeli entitásokat, így kezelheti az API háttérszolgáltatásait. A háttérentitások információkat foglalnak össze a háttérszolgáltatásról, elősegítve az API-k újrafelhasználhatóságát és a továbbfejlesztett szabályozást.

Használjon háttérrendszereket az alábbiak közül egyhez vagy többhez:

  • A háttérszolgáltatás felé irányuló kérések hitelesítő adatainak engedélyezése
  • Használja ki az API Management funkcióit az Azure Key Vault titkos kulcsainak karbantartásához, ha a névvel ellátott értékek a fejléc- vagy lekérdezésparaméter-hitelesítéshez vannak konfigurálva.
  • Kapcsolatcsoport-megszakító szabályok definiálása a háttérrendszer túl sok kéréssel szembeni védelméhez
  • Kérelmek átirányítása vagy terheléselosztása több háttérrendszernek

Háttérbeli entitások konfigurálása és kezelése az Azure Portalon, vagy Azure API-k vagy eszközök használatával.

Referencia háttérrendszer a set-backend-service szabályzat használatával

A háttérrendszer létrehozása után hivatkozhat a háttérrendszerre az API-kban. set-backend-service A házirend használatával egy bejövő API-kérést irányíthat a háttérrendszerbe. Ha már konfigurált egy háttérbeli webszolgáltatást egy API-hoz, a set-backend-service szabályzattal átirányíthatja a kérést egy háttérentitáshoz. Példa:

<policies>
    <inbound>
        <base />
        <set-backend-service backend-id="myBackend" />
    </inbound>
    [...]
<policies/>

A feltételes logikával a set-backend-service szabályzattal módosíthatja a tényleges háttérrendszert a hely, a hívott átjáró vagy más kifejezések alapján.

Itt látható például egy szabályzat, amely átirányítja a forgalmat egy másik háttérrendszerbe a hívott átjáró alapján:

<policies>
    <inbound>
        <base />
        <choose>
            <when condition="@(context.Deployment.Gateway.Id == "factory-gateway")">
                <set-backend-service backend-id="backend-on-prem" />
            </when>
            <when condition="@(context.Deployment.Gateway.IsManaged == false)">
                <set-backend-service backend-id="self-hosted-backend" />
            </when>
            <otherwise />
        </choose>
    </inbound>
    [...]
<policies/>

Megszakító (előzetes verzió)

Az API 2023-03-01 előzetes verziójától kezdve az API Management egy kapcsolatcsoport-megszakító tulajdonságot tesz elérhetővé a háttérerőforrásban, hogy megvédje a háttérszolgáltatást a túl sok kéréstől.

  • Az áramkör-megszakító tulajdonság olyan szabályokat határoz meg, amelyekkel a megszakítót át lehet rántani, például a hibaállapotok száma vagy százalékos aránya egy meghatározott időintervallumban, valamint a meghibásodásokat jelző állapotkódok tartománya.
  • Amikor az áramkör-megszakító kitér, az API Management egy meghatározott időre leállítja a kérések küldését a háttérszolgáltatásnak, és egy 503 Szolgáltatás nem érhető el választ ad vissza az ügyfélnek.
  • A konfigurált utazás időtartama után a kapcsolatcsoport alaphelyzetbe áll, és a forgalom visszaáll a háttérrendszerre.

A háttér áramkör-megszakító az áramkör-megszakító minta implementálása, amely lehetővé teszi a háttérrendszer számára, hogy helyreálljon a túlterhelési helyzetekből. Az API Management-átjáró és a háttérszolgáltatások védelméhez implementálható általános sebességkorlátozó és egyidejűségi korlátozási szabályzatokat bővít.

Feljegyzés

  • A háttér-kapcsolatcsoport-megszakító jelenleg nem támogatott az API Management használati szintjén.
  • Az API Management-architektúra elosztott jellege miatt a megszakító lecsatolási szabályai hozzávetőlegesek. Az átjáró különböző példányai nem szinkronizálódnak, és az ugyanazon példányra vonatkozó információk alapján alkalmazzák az áramkör-megszakító szabályokat.

Példa

Az API Management REST API - vagy Bicep- vagy ARM-sablonnal konfigurálhat egy kapcsolatcsoport-megszakítót egy háttérrendszerben. Az alábbi példában a myBackend kapcsolatcsoport-megszakítója az API Management-példány myAPIM-példányábanakkor indul el, ha egy nap alatt három vagy több 5xx állapotkód jelzi a kiszolgálóhibákat. A megszakító egy óra elteltével alaphelyzetbe áll.

Adjon meg egy, a Bicep-sablonhoz hasonló kódrészletet egy háttérerőforráshoz egy áramkör-megszakítóval:

resource symbolicname 'Microsoft.ApiManagement/service/backends@2023-03-01-preview' = {
  name: 'myAPIM/myBackend'
  properties: {
    url: 'https://mybackend.com'
    protocol: 'https'
    circuitBreaker: {
      rules: [
        {
          failureCondition: {
            count: 3
            errorReasons: [
              'Server errors'
            ]
            interval: 'P1D'
            statusCodeRanges: [
              {
                min: 500
                max: 599
              }
            ]
          }
          name: 'myBreakerRule'
          tripDuration: 'PT1H'
        }
      ]
    }
   }
 }

Elosztott terhelésű készlet (előzetes verzió)

Az API 2023-05-01 előzetes verziójától kezdődően az API Management támogatja a háttérkészleteket, ha több háttérrendszert szeretne implementálni egy API-hoz, és terheléselosztási kéréseket szeretne megvalósítani ezeken a háttérrendszereken. A háttérkészlet jelenleg támogatja a ciklikus időszeleteléses terheléselosztást.

Használjon háttérkészletet a következő forgatókönyvekhez:

  • Terjessze a terhelést több háttérrendszerre, amelyek különálló háttér-megszakítókkal rendelkezhetnek.
  • Helyezze át a terhelést az egyik háttérrendszerről a másikra a frissítéshez (kék-zöld üzembe helyezés).

Háttérkészlet létrehozásához állítsa be a type háttérrendszer pool tulajdonságát, és adja meg a készletet alkotó háttérkészletek listáját.

Feljegyzés

  • Jelenleg csak egyetlen háttérrendszert vehet fel egy háttérkészletbe. Nem adhat hozzá háttérrendszertípust pool egy másik háttérkészlethez.
  • Az API Management-architektúra elosztott jellege miatt a háttérbeli terheléselosztás hozzávetőleges. Az átjáró különböző példányai nem szinkronizálódnak, és terheléselosztást végeznek ugyanazon példány adatai alapján.

Példa

Háttérkészlet konfigurálásához használja az API Management REST API-t , vagy egy Bicep- vagy ARM-sablont. Az alábbi példában a myAPIM API Management-példányban lévő myBackendPool háttérkészlet egy háttérkészlettel van konfigurálva. A készlet háttérrendszerei például a backend-1 és a backend-2 nevet viselik.

Adjon meg egy, a Bicep-sablonhoz hasonló kódrészletet egy elosztott terhelésű készlettel rendelkező háttérerőforráshoz:

resource symbolicname 'Microsoft.ApiManagement/service/backends@2023-05-01-preview' = {
  name: 'myAPIM/myBackendPool'
  properties: {
    description: 'Load balancer for multiple backends'
    type: 'Pool'
    protocol: 'http'
    url: 'https://example.com'
    pool: {
      services: [
        {
          id: '/backends/backend-1'
        }
        {
          id: '/backends/backend-2'
        }
      ]
    }
  }
}

Korlátozás

A fejlesztői és prémium szintű szolgáltatások esetében egy belső virtuális hálózaton üzembe helyezett API Management-példány HTTP 500-es BackendConnectionFailure hibákat okozhat, ha az átjáró végpontjának URL-címe és a háttérRENDSZER URL-címe megegyezik. Ha ezt a korlátozást tapasztalja, kövesse az Önláncolt API Management kérés korlátozásának utasításait a belső virtuális hálózati módról szóló cikkben, a Tech Community blogban.