Udostępnij za pomocą


Omówienie buforowania

DOTYCZY: Wszystkich poziomów zarządzania API

Konfigurowanie buforowania w usłudze Azure API Management w celu przechowywania i pobierania odpowiedzi na żądania interfejsu API i powiązanych informacji. Dzięki przechowywaniu odpowiedzi z usług zaplecza usługa API Management może obsługiwać kolejne identyczne żądania bezpośrednio z pamięci podręcznej, co zmniejsza konieczność wielokrotnego wywoływania usługi zaplecza. Buforowanie może poprawić wydajność interfejsu API, zmniejszyć obciążenie zaplecza i poprawić ogólne doświadczenie klientów wywołujących interfejsy API poprzez zarządzanie API.

W tym artykule opisano opcje buforowania w usłudze API Management oraz najważniejsze scenariusze i zagadnienia dotyczące konfiguracji.

Ważne

Buforowanie wymaga zarówno usługi buforowania — wewnętrznej pamięci podręcznej wdrożonej automatycznie w ramach usługi API Management lub zewnętrznej pamięci podręcznej wdrożonej przez Użytkownika — oraz konfiguracji zasad buforowania w celu określenia sposobu stosowania buforowania do żądań interfejsu API.

Opcje usługi buforowania

Usługa Azure API Management udostępnia następujące opcje usługi buforowania, aby spełnić różne wymagania dotyczące wydajności i architektury.

  • Wewnętrzna (wbudowana): Wewnętrzna (wbudowana) pamięć podręczna jest automatycznie udostępniana we wszystkich poziomach usługi API Management (z wyjątkiem poziomu Zużycia). Implementacja wewnętrznej pamięci podręcznej różni się między warstwami klasycznymi (Developer, Basic, Standard i Premium) a warstwami v2 (Basic v2, Standard v2 i Premium v2). Wbudowana pamięć podręczna w warstwach v2 zapewnia zwiększoną niezawodność. Dowiedz się więcej o buforowaniu za pomocą wbudowanej pamięci podręcznej.

  • Zewnętrzna pamięć podręczna: w celu zwiększenia wydajności i trwałości opcjonalnie skonfiguruj zewnętrzną pamięć podręczną zgodną z usługą Redis, taką jak Azure Managed Redis, do użycia z dowolną warstwą usługi lub bramą usługi API Management. Dowiedz się więcej o konfigurowaniu zewnętrznej pamięci podręcznej za pomocą usługi Azure Managed Redis.

W poniższej tabeli porównaliśmy możliwości wewnętrznej i zewnętrznej pamięci podręcznej.

Capability Wewnętrzny External
Automatyczne udostępnianie i zarządzanie ✔️
Dodatkowy koszt ✔️
Konfiguracja niestandardowa ✔️
Dostępność we wszystkich warstwach i bramach Niedostępne w poziomie Zużycie lub bramie samodzielnie hostowanej ✔️
Regionalne przechowywanie Pamięć podręczna jest dostępna w tym samym regionie co instancja usługi API Management i jest współdzielona między jednostkami skalowalnymi.

We wdrożeniu obejmującym wiele regionów każdy region ma własną pamięć podręczną.
Zależy od preferencji klienta
Trwała pamięć Trwałe w warstwach w wersji w2.

W warstwach klasycznych (Deweloper, Podstawowa, Standardowa i Premium) zawartość pamięci podręcznej nie jest zachowywana w przypadku aktualizacji usługi.
✔️
Limity dla warstwy Rozmiar pamięci podręcznej różni się w zależności od warstwy usługi Nie ograniczone
Dostęp współużytkowany przez wiele wystąpień usługi API Management ✔️
Obsługa buforowania semantycznego ✔️
Obsługa wstępnego ładowania i przeczyszczania danych ✔️

Scenariusze buforowania

Buforowanie w usłudze Azure API Management można używać w scenariuszach, takich jak te w poniższej tabeli.

Scenario Description Typ pamięci podręcznej Zachowanie przy utracie dostępności pamięci podręcznej lub łączności
Optymalizowanie środowiska klienta Przyspieszanie powtarzalnego przetwarzania żądań dla klientów. Wewnętrzne lub zewnętrzne Zaplecze obsługuje żądania i musi obsługiwać pełne obciążenie, jeśli pamięć podręczna jest niedostępna.
Kontrolowanie kosztów i skalowania zaplecza Zmniejsz obciążenie zaplecza i koszty, gdy zaplecze nie jest skalowane pod kątem pełnego ruchu. External Zależy od konfiguracji pamięci podręcznej i usługi. Zalecenie: wybierz warstwę usługi pamięci podręcznej z najwyższą niezawodnością i monitoruj wydajność.
Magazyn metadanych Użyj wartości magazynu pamięci podręcznej do przechowywania dowolnych danych w pamięci podręcznej. Wewnętrzne lub zewnętrzne Zależy od konfiguracji pamięci podręcznej i usługi.

Considerations:

  • W każdym scenariuszu buforowania należy wziąć pod uwagę możliwość utraty dostępności pamięci podręcznej lub łączności. Usługa API Management korzysta z podejścia "najlepszego wysiłku" do buforowania dostępności. Jeśli skonfigurowana pamięć podręczna nie jest dostępna, występują błędy pamięci podręcznej i domyślnie żądania będą nadal kierowane do usługi zaplecza.

  • W warstwach klasycznych usługi API Management wewnętrzna pamięć podręczna jest niestabilna i nie jest utrwalana w aktualizacjach usługi. Podczas aktualizacji usługi wewnętrzna pamięć podręczna jest czyszczone w procesie stopniowym, który obejmuje maksymalnie 50% pamięci podręcznej naraz.

    Uwaga / Notatka

    Możesz skonfigurować ustawienia aktualizacji usługi, w tym okno konserwacyjne dla aktualizacji, aby zminimalizować potencjalne wpływy na klientów, takie jak utrata wewnętrznej pamięci podręcznej.

  • Jeśli skonfigurujesz zewnętrzną pamięć podręczną, może to być trwałe, ale odpowiadasz za zapewnienie dostępności i łączności.

  • Aby chronić usługę zaplecza przed skokami ruchu, które mogą ją przeciążać, gdy pamięć podręczna jest niedostępna, skonfiguruj zasady ograniczania szybkości (rate-limit lub rate-limit-by-key) natychmiast po wszelkich zasadach wyszukiwania w pamięci podręcznej.

Zasady buforowania

Konfigurowanie zasad buforowania w celu kontrolowania sposobu buforowania i pobierania odpowiedzi interfejsu API w usłudze Azure API Management.

  • Domyślnie usługa API Management w zasadach buforowania używa zewnętrznej pamięci podręcznej, jeśli jest skonfigurowana, w przeciwnym razie używa wbudowanej pamięci podręcznej.

  • Usługa API Management udostępnia zasady buforowania w parach, jak pokazano w poniższej tabeli. W definicji zasad skonfiguruj zasady wyszukiwania pamięci podręcznej w inbound sekcji w celu sprawdzenia odpowiedzi w pamięci podręcznej oraz zasad magazynu pamięci podręcznej w outbound sekcji w celu przechowywania pomyślnych odpowiedzi w pamięci podręcznej.

Policies Description Usage
wyszukiwanie w / pamięci podręcznejmagazyn pamięci podręcznej — Pobieranie odpowiedzi z pamięci podręcznej
— Przechowywanie odpowiedzi w żądaniu pamięci podręcznej
— Służy do pobierania pełnej odpowiedzi interfejsu API z pamięci podręcznej dla identycznego GET żądania
wyszukiwanie-wartości-w-cache / przechowywanie-wartości-w-cache — Pobieranie określonej wartości z pamięci podręcznej
— Przechowywanie określonej wartości w pamięci podręcznej
— Służy do obsługi niestandardowych scenariuszy buforowania z określonymi kluczami pamięci podręcznej
azure-openai-semantic-cache-lookup / azure-openai-semantic-cache-store — Sprawdź, czy w pamięci podręcznej istnieje semantycznie podobna odpowiedź dla żądania do interfejsu API usługi Azure OpenAI
Zapisz odpowiedź dla żądania interfejsu API usługi Azure OpenAI
— Służy do uzyskiwania podobnych odpowiedzi na żądania interfejsu API do uzupełniania czatu Azure OpenAI
llm-semantic-cache-lookup / llm-semantic-cache-store — Sprawdź, czy w pamięci podręcznej istnieje semantycznie podobna odpowiedź dla żądania interfejsu API LLM
Przechowaj odpowiedź na żądanie API LLM
— Służy do pobierania podobnych odpowiedzi do żądań interfejsu API uzupełniania czatów LLM

Wskazówka

  • Zasady przechowywania wpisów w pamięci podręcznej zawierają atrybut określający duration czas przechowywania buforowanego wpisu.
  • Użyj funkcji cache-remove-value , aby usunąć określoną wartość zidentyfikowaną przez klucz z pamięci podręcznej.

Przykłady zasad buforowania

Poniżej przedstawiono podstawowe przykłady zasad buforowania w usłudze API Management. Aby uzyskać więcej przykładów, zobacz artykuły referencyjne polityki buforowania.

Buforowanie odpowiedzi

Buforowanie pełnej odpowiedzi interfejsu API w wewnętrznej pamięci podręcznej w celu obsługi identycznych żądań bez wywołań zaplecza. W tym przykładzie pamięć podręczna przechowuje odpowiedzi przez siedem dni.

<policies>
    <inbound>
        <base />
        <cache-lookup vary-by-developer="false" vary-by-developer-groups="false" downstream-caching-type="none" must-revalidate="true" caching-type="internal" >
            <vary-by-query-parameter>version</vary-by-query-parameter>
        </cache-lookup>
    </inbound>
    <outbound>
        <cache-store duration="604800" />
        <base />
    </outbound>
</policies>

Buforowanie wartości

Buforuj określone wartości danych do ponownego użycia w wielu żądaniach.

<policies>
    <inbound>
        <cache-lookup-value key="user-preferences" default-value="none" variable-name="preferences" />
        <choose>
            <when condition="@(context.Variables["preferences"].ToString() == "none")">
                <!-- Load preferences from backend -->
                <send-request mode="new" response-variable-name="prefsResponse">
                    <set-url>https://backend.api/user/preferences</set-url>
                </send-request>
                <cache-store-value key="user-preferences" value="@(((IResponse)context.Variables["prefsResponse"]).Body.As<string>())" duration="1800" />
            </when>
        </choose>
    </inbound>
</policies>

Ochrona limitowania przepustowości

Najlepszym rozwiązaniem jest łączenie wyszukiwania pamięci podręcznej z ograniczaniem szybkości w celu ochrony usług zaplecza.

<policies>
    <inbound>
        <cache-lookup-value key="@("data-" + context.Request.IpAddress)" variable-name="cachedData" />
        <choose>
            <when condition="@(!context.Variables.ContainsKey("cachedData"))">
                <rate-limit calls="10" renewal-period="60" />
                <!-- Proceed to backend -->
            </when>
            <otherwise>
                <!-- Return cached data without rate limiting -->
                <return-response>
                    <set-body>@((string)context.Variables["cachedData"])</set-body>
                </return-response>
            </otherwise>
        </choose>
    </inbound>
</policies>

Zagadnienia dotyczące zabezpieczeń

  • Dane poufne: unikaj buforowania odpowiedzi zawierających poufne lub osobiste informacje
  • Klucze pamięci podręcznej: upewnij się, że klucze pamięci podręcznej nie uwidacznia poufnych informacji w dziennikach lub diagnostyce
  • Kontrola dostępu: Zewnętrzna pamięć podręczna wymaga odpowiednich zabezpieczeń sieci i kontroli dostępu
  • Szyfrowanie: użyj protokołu TLS/SSL dla połączeń z wystąpieniami zewnętrznej pamięci podręcznej