Serverdelar i API Management

GÄLLER FÖR: Alla API Management-nivåer

En serverdel (eller API-serverdel) i API Management är en HTTP-tjänst som implementerar klientdels-API:et och dess åtgärder.

När du importerar vissa API:er konfigurerar API Management API-serverdelen automatiskt. API Management konfigurerar till exempel serverdelswebbtjänsten vid import:

API Management stöder även användning av andra Azure-resurser som en API-serverdel, till exempel:

Fördelar med serverdelar

API Management stöder serverdelsentiteter så att du kan hantera serverdelstjänsterna i ditt API. En serverdelsentitet kapslar in information om serverdelstjänsten, vilket främjar återanvändning mellan API:er och förbättrad styrning.

Använd serverdelar för en eller flera av följande:

  • Auktorisera autentiseringsuppgifterna för begäranden till serverdelstjänsten
  • Dra nytta av API Management-funktioner för att underhålla hemligheter i Azure Key Vault om namngivna värden har konfigurerats för autentisering av huvud- eller frågeparameter.
  • Definiera regler för kretsbrytare för att skydda serverdelen från för många begäranden
  • Dirigera eller belastningsbelasta begäranden till flera serverdelar

Konfigurera och hantera serverdelsentiteter i Azure-portalen eller med hjälp av Azure-API:er eller verktyg.

Referensserverdel med set-backend-service-princip

När du har skapat en serverdel kan du referera till serverdelen i dina API:er. set-backend-service Använd principen för att dirigera en inkommande API-begäran till serverdelen. Om du redan har konfigurerat en serverdelswebbtjänst för ett API kan du använda set-backend-service principen för att omdirigera begäran till en serverdelsentitet i stället. Till exempel:

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

Du kan använda villkorsstyrd logik med set-backend-service principen för att ändra den effektiva serverdelen baserat på plats, gateway som anropades eller andra uttryck.

Här är till exempel en princip för att dirigera trafik till en annan serverdel baserat på gatewayen som anropades:

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

Kretsbrytare (förhandsversion)

Från och med API version 2023-03-01 förhandsgranskning exponerar API Management en kretsbrytaregenskap i serverdelsresursen för att skydda en serverdelstjänst från att överbelastas av för många begäranden.

  • Egenskapen kretsbrytare definierar regler för att snubbla kretsbrytaren, till exempel antalet eller procentandelen felförhållanden under ett definierat tidsintervall och ett intervall med statuskoder som indikerar fel.
  • När kretsbrytaren körs slutar API Management att skicka begäranden till serverdelstjänsten under en definierad tid och returnerar ett svar på 503 Tjänsten är inte tillgänglig för klienten.
  • Efter den konfigurerade resans varaktighet återställs kretsen och trafiken återupptas till serverdelen.

Serverdelsbrytaren är en implementering av kretsbrytarmönstret så att serverdelen kan återställas från överbelastningssituationer. Den utökar allmänna principer för hastighetsbegränsning och samtidighetsbegränsning som du kan implementera för att skydda API Management-gatewayen och dina serverdelstjänster.

Kommentar

  • För närvarande stöds inte serverdelskretsens brytare i förbrukningsnivån för API Management.
  • På grund av den distribuerade karaktären hos API Management-arkitekturen är regler för kretsbrytare ungefärliga. Olika instanser av gatewayen synkroniseras inte och tillämpar regler för kretsbrytare baserat på information om samma instans.

Exempel

Använd API Management REST API eller en Bicep- eller ARM-mall för att konfigurera en kretsbrytare i en serverdel. I följande exempel går kretsbrytaren i myBackend i API Management-instansen myAPIM ut när det finns tre eller fler 5xx statuskoder som anger serverfel på en dag. Kretsbrytaren återställs efter en timme.

Inkludera ett kodfragment som liknar följande i Bicep-mallen för en serverdelsresurs med en kretsbrytare:

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'
        }
      ]
    }
   }
 }

Belastningsutjämningspool (förhandsversion)

Från och med API version 2023-05-01 har API Management stöd för serverdelspooler när du vill implementera flera serverdelar för ett API och belastningsutjämningsbegäranden över dessa serverdelar. För närvarande har serverdelspoolen stöd för resursallokeringsbelastningsutjämning.

Använd en serverdelspool för scenarier som följande:

  • Sprid belastningen till flera serverdelar, som kan ha enskilda serverdelsbrytare.
  • Flytta belastningen från en uppsättning serverdelar till en annan för uppgradering (blågrön distribution).

Om du vill skapa en serverdelspool anger du type egenskapen för serverdelen till pool och anger en lista över serverdelar som utgör poolen.

Kommentar

  • För närvarande kan du bara inkludera enskilda serverdelar i en serverdelspool. Du kan inte lägga till en serverdel av typen pool till en annan serverdelspool.
  • På grund av API Management-arkitekturens distribuerade karaktär är belastningsutjämningen för serverdelen ungefärlig. Olika instanser av gatewayen synkroniseras inte och belastningsutjämning baseras på information om samma instans.

Exempel

Använd API Management REST API eller en Bicep- eller ARM-mall för att konfigurera en serverdelspool. I följande exempel konfigureras serverdelen myBackendPool i API Management-instansen myAPIM med en serverdelspool. Exempel på serverdelar i poolen heter backend-1 och backend-2.

Inkludera ett kodfragment som liknar följande i Bicep-mallen för en serverdelsresurs med en belastningsutjäcknad pool:

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'
        }
      ]
    }
  }
}

Begränsning

För developer - och Premium-nivåer kan en API Management-instans som distribueras i ett internt virtuellt nätverk utlösa HTTP 500-fel BackendConnectionFailure när gatewayens slutpunkts-URL och serverdels-URL är desamma. Om du stöter på den här begränsningen följer du anvisningarna i artikeln Om självlänkad API Management-begäran i internt virtuellt nätverksläge i Tech Community-bloggen.