Udostępnij za pośrednictwem


Zaplecza w usłudze API Management

DOTYCZY: Wszystkie warstwy usługi API Management

Zaplecze (lub zaplecze interfejsu API) w usłudze API Management to usługa HTTP, która implementuje interfejs API frontonu i jego operacje.

Podczas importowania niektórych interfejsów API usługa API Management automatycznie konfiguruje zaplecze interfejsu API. Na przykład usługa API Management konfiguruje usługę internetową zaplecza podczas importowania:

Usługa API Management obsługuje również używanie innych zasobów platformy Azure jako zaplecza interfejsu API, takich jak:

  • Klaster usługi Service Fabric.
  • Usługa niestandardowa.

Zalety zaplecza

Usługa API Management obsługuje jednostki zaplecza, dzięki czemu można zarządzać usługami zaplecza interfejsu API. Jednostka zaplecza hermetyzuje informacje o usłudze zaplecza, promując możliwość ponownego użycia między interfejsami API i ulepszonym ładem.

Użyj zapleczy dla co najmniej jednego z następujących elementów:

  • Autoryzowanie poświadczeń żądań do usługi zaplecza
  • Skorzystaj z funkcji usługi API Management, aby zachować wpisy tajne w usłudze Azure Key Vault, jeśli nazwane wartości są skonfigurowane do uwierzytelniania parametrów nagłówka lub zapytania.
  • Definiowanie reguł wyłącznika w celu ochrony zaplecza przed zbyt wieloma żądaniami
  • Kierowanie lub równoważenie obciążenia żądań do wielu zapleczy

Konfigurowanie jednostek zaplecza i zarządzanie nimi w witrynie Azure Portal lub przy użyciu interfejsów API platformy Azure lub narzędzi.

Odwołuj się do zaplecza przy użyciu zasad set-backend-service

Po utworzeniu zaplecza możesz odwołać się do zaplecza w interfejsach API. Użyj zasad, set-backend-service aby skierować przychodzące żądanie interfejsu API do zaplecza. Jeśli skonfigurowano już usługę internetową zaplecza dla interfejsu API, możesz użyć set-backend-service zasad, aby zamiast tego przekierować żądanie do jednostki zaplecza. Na przykład:

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

Logika warunkowa z zasadami set-backend-service umożliwia zmianę efektywnego zaplecza na podstawie lokalizacji, bramy, która została wywołana lub innych wyrażeń.

Na przykład poniżej przedstawiono zasady kierowania ruchu do innego zaplecza na podstawie bramy, która została wywołana:

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

Wyłącznik

Usługa API Management uwidacznia właściwość wyłącznika w zasobie zaplecza, aby chronić usługę zaplecza przed przeciążeniami zbyt wielu żądań.

  • Właściwość wyłącznika definiuje reguły, aby przejeścić wyłącznik, takie jak liczba lub procent warunków awarii w zdefiniowanym przedziale czasu i zakres kodów stanu wskazujących awarie.
  • Gdy wyłącznik przechodzi, usługa API Management zatrzymuje wysyłanie żądań do usługi zaplecza przez zdefiniowany czas i zwraca odpowiedź 503 Usługa niedostępna dla klienta.
  • Po skonfigurowanym czasie trwania podróży obwód zostanie zresetowany i ruch zostanie wznowiony do zaplecza.

Wyłącznik zaplecza jest implementacją wzorca wyłącznika, aby umożliwić zapleczu odzyskiwanie po sytuacjach przeciążenia. Rozszerza ona ogólne zasady ograniczania szybkości i współbieżności , które można zaimplementować w celu ochrony bramy usługi API Management i usług zaplecza.

Uwaga

  • Obecnie wyłącznik zaplecza nie jest obsługiwany w warstwie Zużycie usługi API Management.
  • Ze względu na rozproszony charakter architektury usługi API Management przybliżone są reguły wyłącznika. Różne wystąpienia bramy nie są synchronizowane i będą stosować reguły wyłącznika na podstawie informacji o tym samym wystąpieniu.
  • Obecnie dla wyłącznika zaplecza można skonfigurować tylko jedną regułę.

Przykład

Użyj interfejsu API REST usługi API Management lub szablonu Bicep lub ARM, aby skonfigurować wyłącznik w zapleczu. W poniższym przykładzie wyłącznik w myBackend w wystąpieniu usługi API Management myAPIM jest wyświetlany, gdy istnieją trzy lub więcej 5xx kodów stanu wskazujących błędy serwera w ciągu 1 godziny.

Wyłącznik resetuje się po 1 godzinie. Retry-After Jeśli nagłówek znajduje się w odpowiedzi, wyłącznik akceptuje wartość i czeka na określony czas przed ponownym wysłaniem żądań do zaplecza.

Dołącz fragment kodu podobny do poniższego w szablonie Bicep dla zasobu zaplecza z wyłącznikiem:

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

Pula ze zrównoważonym obciążeniem

Usługa API Management obsługuje pule zaplecza, jeśli chcesz zaimplementować wiele zapleczy dla interfejsu API i równoważenia obciążenia żądań w tych zapleczach.

Użyj puli zaplecza w scenariuszach, takich jak:

  • Rozłożenie obciążenia na wiele zapleczy, które mogą mieć poszczególne wyłączniki zaplecza.
  • Przenieś obciążenie z jednego zestawu zapleczy na inny w celu uaktualnienia (wdrożenie niebiesko-zielone).

Aby utworzyć pulę zaplecza, ustaw type właściwość zaplecza na pool i określ listę zapleczy tworzących pulę.

Uwaga

  • Obecnie można uwzględnić tylko pojedyncze zaplecza w puli zaplecza. Nie można dodać zaplecza typu pool do innej puli zaplecza. W puli można uwzględnić maksymalnie 30 zapleczy.
  • Ze względu na rozproszony charakter architektury usługi API Management równoważenie obciążenia zaplecza jest przybliżone. Różne wystąpienia bramy nie są synchronizowane i będą równoważyć obciążenie na podstawie informacji o tym samym wystąpieniu.

Opcje równoważenia obciążenia

Usługa API Management obsługuje następujące opcje równoważenia obciążenia dla pul zaplecza:

  • Działanie okrężne: domyślnie żądania są dystrybuowane równomiernie w obrębie zapleczy w puli.
  • Ważone: wagi są przypisywane do zapleczy w puli, a żądania są dystrybuowane między zaplecza na podstawie względnej wagi przypisanej do każdego zaplecza. Użyj tej opcji w scenariuszach, takich jak przeprowadzanie wdrożenia niebieski-zielony.
  • Oparte na priorycie: zaplecza są zorganizowane w grupach priorytetów, a żądania są wysyłane do zapleczy w kolejności grup priorytetów. W grupie priorytetów żądania są dystrybuowane równomiernie między zaplecza lub (jeśli są przypisane) zgodnie z względną wagą przypisaną do każdego zaplecza.

Uwaga

Zaplecza w grupach o niższym priorytecie będą używane tylko wtedy, gdy wszystkie zaplecza w grupach o wyższym priorytecie są niedostępne, ponieważ reguły wyłącznika są potknięte.

Przykład

Użyj interfejsu API REST usługi API Management lub szablonu Bicep lub ARM, aby skonfigurować pulę zaplecza. W poniższym przykładzie pula zaplecza myBackendPool w wystąpieniu usługi API Management myAPIM jest skonfigurowana z pulą zaplecza. Przykładowe zaplecza w puli mają nazwę backend-1 i backend-2. Oba zaplecza znajdują się w grupie o najwyższym priorytcie; w grupie zaplecze-1 ma większą wagę niż backend-2 .

Dołącz fragment kodu podobny do poniższego w szablonie Bicep dla zasobu zaplecza z pulą o zrównoważonym obciążeniu:

resource symbolicname 'Microsoft.ApiManagement/service/backends@2023-09-01-preview' = {
  name: 'myAPIM/myBackendPool'
  properties: {
    description: 'Load balancer for multiple backends'
    type: 'Pool'
    pool: {
      services: [
        {
          id: '/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.ApiManagement/service/<APIManagementName>/backends/backend-1'
          priority: 1
          weight: 3
        }
        {
          id: '/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.ApiManagement/service/<APIManagementName>/backends/backend-2'
          priority: 1
          weight: 1
        }
      ]
    }
  }
}

Ograniczenia