Udostępnij przez


Przyjazne dla środowiska interfejsy API w usłudze Azure API Management (wersja zapoznawcza)

DOTYCZY: Developer | Podstawowy | Standardowy | Premium

W tym artykule przedstawiono funkcje usługi Azure API Management, które pomagają zmniejszyć ślad węglowy ruchu interfejsu API. Użyj tych funkcji, aby dostosować ruch interfejsu API na podstawie emisji dwutlenku węgla w różnych regionach świadczenia usługi Azure.

Uwaga / Notatka

  • Funkcje zrównoważonego rozwoju środowiska są obecnie dostępne w ograniczonej wersji zapoznawczej. Aby się zarejestrować, wypełnij formularz.
  • Te funkcje są obecnie dostępne w wybranych regionach w warstwach klasycznych usługi Azure API Management (Developer, Basic, Standard, Premium).

Informacje o zrównoważonych interfejsach API

Organizacje coraz częściej koncentrują się na zmniejszeniu ich wpływu na środowisko poprzez infrastrukturę cyfrową.

Usługa API Management umożliwia osiągnięcie tych celów dzięki funkcjom, które pomagają:

Optymalizując sposób obsługi ruchu przez interfejsy API na podstawie czynników środowiskowych, można:

  • Zmniejszenie emisji dwutlenku węgla ruchu interfejsu API
  • Wspieranie inicjatyw związanych ze zrównoważonym rozwojem firmy i zobowiązań środowiskowych
  • Demonstruj odpowiedzialność za środowisko dla uczestników projektu

Przesuwanie ruchu

Przesunięcie ruchu wymaga skonfigurowania zasobu zaplecza w obsługiwanym regionie świadczenia usługi Azure , który zapewnia informacje o intensywności emisji dwutlenku węgla. Następnie w puli zaplecza ze zrównoważonym obciążeniem określ maksymalny dopuszczalny poziom emisji dwutlenku węgla dla regionalnego zaplecza przy użyciu jednej z kategorii wskaźnika emisji dwutlenku węgla.

Ta funkcja, w połączeniu z istniejącymi strategiami równoważenia obciążenia i routingu, pomaga wykluczyć ruch do zapleczy w regionach ze stosunkowo wyższymi emisjami dwutlenku węgla.

W czasie wykonywania:

  • Usługa API Management dokłada wszelkich starań, aby kierować ruch do "zielonych" zapleczy (w regionach z emisjami poniżej określonych progów) i wyklucza "brudne" zaplecza (w regionach z emisjami powyżej określonych progów).
  • Usługa API Management kieruje ruch do "zanieczyszczonych" zapleczy w określonych warunkach, aby zapewnić ciągłość usług — na przykład gdy wszystkie regionalizowane zaplecza są "zanieczyszczone", a inne zaplecza są niedostępne.

Diagram przenoszenia ruchu do zaplecza z niższymi emisjami w puli ze zrównoważonym obciążeniem.

Przykład konfiguracji

Najpierw skonfiguruj zaplecze w obsługiwanym regionie świadczenia usługi Azure , ustawiając właściwość opcjonalną azureRegion :

{
    "type": "Microsoft.ApiManagement/service/backends", 
    "apiVersion": "2024-10-01-preview", 
    "name": "sustainable-backend", 
    "properties": {
        "url": "https://mybackend.example.com",
        "protocol": "http",
        "azureRegion": "westeurope",
        [...]
  }
}

Następnie użyj regionalizowanego zaplecza w puli ze zrównoważonym obciążeniem i zdefiniuj próg emisji przy użyciu właściwości preferredCarbonEmission.

W tym przykładzie, jeśli intensywność emisji dwutlenku węgla w westeurope regionie przekroczy Medium, ruch do sustainable-backend jest wykluczony w porównaniu z innymi zapleczami serwerów w puli.

{
    [...]
    "properties": {
        "description": "Load balancer for multiple backends",
        "type": "Pool",
        "pool": {
            "services": [
                {
                    "id": "<sustainable-backend-id>",
                    "weight": 1,
                    "priority": 1,
                    "preferredCarbonEmission": "Medium"
                }
                {
                    
                    "id": "<regular-backend-id>",
                    "weight": 1,
                    "priority": 1
                }
                {
                    "id": "<fallback-backend-id>",
                    "weight": 1,
                    "priority": 2
                }
            ]
        }
    }
} 

Kształtowanie ruchu

Kształtowanie ruchu umożliwia dostosowanie zachowania interfejsu API na podstawie relatywnych poziomów emisji dwutlenku węgla w regionie usługi Zarządzania interfejsem API (lub regionach). Usługa API Management uwidacznia zmienną context.Deployment.SustainabilityInfo.CurrentCarbonIntensitykontekstową, która wskazuje bieżącą kategorię wskaźnika emisji dwutlenku węgla dla wystąpienia usługi API Management.

W przypadku wdrożeń obejmujących wiele regionów brama zapewnia wskaźnik emisji dwutlenku węgla w odpowiednim regionie, w którym działa.

Użyj tej zmiennej kontekstowej w zasadach, aby umożliwić bardziej intensywne przetwarzanie ruchu w okresach niskiej emisji dwutlenku węgla lub zmniejszyć przetwarzanie podczas wysokich emisji dwutlenku węgla.

Przykład: Dostosowywanie zachowania w okresach emisji dwutlenku węgla

W poniższym przykładzie usługa API Management wydłuża czas trwania pamięci podręcznej, implementuje bardziej rygorystyczne ograniczanie szybkości i zmniejsza szczegóły rejestrowania w okresach emisji dwutlenku węgla.

<policies>
    <inbound>
        <base />
        <choose>
          <when condition="@(context.Deployment.SustainabilityInfo.CurrentCarbonIntensity == CarbonIntensityCategory.High)">
            <!-- Policies for high carbon emission periods -->
            <cache-store duration="3600" />
            <rate-limit-by-key calls="100" renewal-period="60" counter-key="@(context.Request.IpAddress)" />
            <set-variable name="enableDetailedLogging" value="false" />
          </when>
          <when condition="@(context.Deployment.SustainabilityInfo.CurrentCarbonIntensity == CarbonIntensityCategory.Medium)">
            <!-- Policies for medium carbon emission periods -->
            <cache-store duration="1800" />
            <rate-limit-by-key calls="200" renewal-period="60" counter-key="@(context.Request.IpAddress)" />
            <set-variable name="enableDetailedLogging" value="true" />
          </when>
          <otherwise>
            <!-- Policies for low carbon emission periods -->
            <cache-store duration="900" />
            <rate-limit-by-key calls="300" renewal-period="60" counter-key="@(context.Request.IpAddress)" />
            <set-variable name="enableDetailedLogging" value="true" />
          </otherwise>
        </choose>
    
        <!-- Use the logging variable elsewhere -->
        <choose>
          <when condition="@(context.Variables.GetValueOrDefault<bool>("enableDetailedLogging"))">
            <log-to-eventhub logger-id="detailed-logger">
              @{
                  return JObject.FromObject(context).ToString();
              }
            </log-to-eventhub>
          </when>
          <otherwise>
            <log-to-eventhub logger-id="basic-logger">
              @{
                  var log = new JObject();
                  log["requestId"] = context.RequestId;
                  log["method"] = context.Request.Method;
                  log["url"] = context.Request.Url.ToString();
                  log["statusCode"] = context.Response.StatusCode;
                  return log.ToString();
              }
            </log-to-eventhub>
          </otherwise>
        </choose>
    </inbound>
    [...]    
</policies>

Przykład: przekazywanie informacji o wskaźniku emisji dwutlenku węgla do systemów backendowych lub w logach

W poniższym przykładzie pokazano, jak uzyskać dostęp do obecnej intensywności emisji dwutlenku węgla i przekazywać ją do zaplecza systemu lub do dzienników.

<policies>
    [...]
    <outbound>
        <base />
        <set-header name="X-Sustainability-CarbonEmission" exists-action="override">
            <value>@(context.Deployment.SustainabilityInfo.CurrentCarbonIntensity.ToString())</value>
        </set-header>
    </outbound>
    [...]
</policies>

Przykład: Dostosowywanie szczegółowości śledzenia na podstawie intensywności emisji dwutlenku węgla

W poniższym przykładzie pokazano, jak za pomocą bieżących informacji o intensywności emisji dwutlenku węgla dostosować ilość informacji propagowanych w śladzie niestandardowym.

<policies>
    [...]
    <inbound>
        <base />
        <choose>
            <when condition="@(context.Deployment.SustainabilityInfo.CurrentCarbonIntensity >= CarbonIntensityCategory.High)">
                <trace source="Orders API" severity="verbose">
                    <message>Lead Created</message>
                </trace>
            </when>
            <otherwise>
                <trace source="Orders API" severity="information">
                    <message>Lead Created</message>
                </trace>
            </otherwise>
        </choose>
    </inbound>
    [...]    
</policies>

Dostępność regionu

Poniższa tabela wskazuje:

  • Regiony, w których instancje w klasycznych warstwach usługi API Management (Developer, Basic, Standard, Premium) wspierają funkcje związane ze zrównoważonym rozwojem (po zarejestrowaniu się w celu uzyskania wersji zapoznawczej)
  • Regiony, w których są dostępne informacje o intensywności emisji dwutlenku węgla, na przykład w przypadku tworzenia regionalnych zapleczy na potrzeby przenoszenia ruchu
Region Obsługa usługi API Management Informacje o wskaźniku emisji dwutlenku węgla
Australia Środkowa
Australia Środkowa 2
Australia Wschodnia
Australia Południowo-Wschodnia
Brazylia Południowa
Brazylia Południowo-Wschodnia
Kanada Środkowa
Kanada Wschodnia
Indie Środkowe
Środkowe stany USA
Chile Środkowe
Azja Wschodnia
Wschodnie stany USA
Wschodnie stany USA 2
Francja Środkowa
Francja Południowa
Niemcy Północne
Niemcy Środkowo-Zachodnie
Indonezja Środkowa
Izrael Środkowy
Włochy Północne
Japonia Wschodnia
Japonia Zachodnia
Jio Indie Środkowe
Jio India Zachodnia
Korea Środkowa
Korea Południowa
Malezja Południowa
Meksyk Środkowy
Nowa Zelandia Północna
Północno-środkowe stany USA
Europa Północna
Norwegia Wschodnia
Norwegia Zachodnia
Polska Środkowa
Katar Środkowy
Północna Republika Południowej Afryki
Zachodnia Republika Południowej Afryki
Południowo-środkowe stany USA
Indie Południowe
Azja Południowo-Wschodnia
Hiszpania Środkowa
Szwecja Środkowa
Szwecja Południowa
Szwajcaria Północna
Szwajcaria Zachodnia
Tajwan Północny
Tajwan Północno-zachodni
Tajwan Zachodni
Środkowe Zjednoczone Emiraty Arabskie
Północne Zjednoczone Emiraty Arabskie
Południowe Zjednoczone Królestwo
Zachodnie Zjednoczone Królestwo
Zachodnio-środkowe stany USA
Europa Zachodnia
Indie Zachodnie
Zachodnie stany USA
Zachodnie stany USA 2
Zachodnie stany USA 3

Kategorie intensywności emisji dwutlenku węgla

W poniższej tabeli opisano kategorie wskaźnika emisji dwutlenku węgla używane w funkcjach zmiany ruchu i kształtowania ruchu. Wartości są w gramach CO₂e na KWh dla emisji zakresu 2.

Kategoria g CO₂e
Niedostępne N/A
Bardzo niski ≤ 150
Low 151-300
Średni 301-500
High 501-700
BardzoWysoki > 700