Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Pamięć podręczna to proces tymczasowego przechowywania danych w obszarze nazywanym pamięcią podręczną na przyszłość. odwołania. Zapisywanie danych w pamięci podręcznej znacznie zwiększa wydajność, ponieważ:
- Umożliwia szybsze pobieranie danych
- Skraca czas przetwarzania dzięki uniknięciu nieustannego generowania danych
- Uniemożliwia wysyłaniu żądań do interfejsu API do serwerów backendu, zmniejszając w ten sposób serwery backendu
- Umożliwia lepsze wykorzystanie zasobów systemu/aplikacji
- Skraca czas odpowiedzi interfejsów API
Gdy musimy często korzystać z danych, które nie zmieniają się zbyt często, zalecamy przechowywanie tych danych w pamięci podręcznej.
Apigee Edge umożliwia przechowywanie danych w pamięci podręcznej w czasie działania, co zapewnia ich trwałość i szybsze działanie pobieranie danych. Funkcję buforowania udostępnia zasada PopulationCache. Zasada szeregowania pamięci podręcznej, zasada VerifyCache i zasada pamięci podręcznej odpowiedzi.
W tej sekcji przyjrzymy się zasadom pamięci podręcznej odpowiedzi. Zasada pamięci podręcznej odpowiedzi w Apigee Edge umożliwia buforowanie odpowiedzi z serwerów backendu. Jeśli aplikacje klienckie wielokrotnie wysyła żądania do tego samego zasobu backendu, co powoduje jego aktualizację możemy je okresowo zapisywać w pamięci podręcznej, korzystając z tej zasady. Zasada pamięci podręcznej odpowiedzi pomaga zwracać odpowiedzi z pamięci podręcznej, a tym samym pozwala uniknąć przekazywania żądań do serwerów backendu.
Zasada pamięci podręcznej odpowiedzi:
- Zmniejsza liczbę żądań docierających do backendu
- Zmniejsza przepustowość sieci
- Zwiększa wydajność interfejsu API i czas odpowiedzi
Antywzór
Zasada ResponseCache umożliwia buforowanie odpowiedzi HTTP w pamięci podręcznej z dowolnym kodem stanu. domyślnie. Oznacza to, że w pamięci podręcznej mogą być przechowywane zarówno odpowiedzi powodzenia, jak i błędów.
Oto przykładowa zasada pamięci podręcznej odpowiedzi z konfiguracją domyślną:
<!-- /antipatterns/examples/1-1.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResponseCache async="false" continueOnError="false" enabled="true" name="TargetServerResponseCache"> <DisplayName>TargetServer ResponseCache</DisplayName> <CacheKey> <Key Fragment ref="request.uri" /></CacheKey> <Scope>Exclusive</Scope> <ExpirySettings> <TimeoutInSec ref="flow.variable.here">600</TimeoutInSec> </ExpirySettings> <CacheResource>targetCache</CacheResource> </ResponseCache>
Zasada pamięci podręcznej odpowiedzi domyślnie zapisuje w pamięci podręcznej odpowiedzi na błędy konfiguracji. Nie zalecamy jednak zapisywania odpowiedzi w pamięci podręcznej w pamięci podręcznej bez przemyślenia nad negatywnymi konsekwencjami, ponieważ:
- Sytuacja 1: awarie występują przez pewien tymczasowy, nieznany okres i
może nadal wysyłać odpowiedzi na błędy
ze względu na buforowanie nawet po rozwiązaniu problemu
LUB
- Scenariusz 2: błędy są obserwowane przez określony czas, Gdy problem zostanie rozwiązany, będziemy musieli zmienić kod, aby uniknąć zapisywania odpowiedzi w pamięci podręcznej.
Przyjrzyjmy się temu 2 scenariuszom bardziej szczegółowo.
Scenariusz 1. Tymczasowa awaria backendu/zasobu
Weź pod uwagę, że awaria serwera backendu może mieć jedną z tych przyczyn:
- Tymczasowa awaria sieci
- Serwer backendu jest bardzo zajęty i nie może odpowiedzieć na żądania kropka
- Żądany zasób backendu może zostać usunięty lub niedostępny przez pewien czas
- Serwer backendu odpowiada wolno z powodu długiego czasu przetwarzania. itp.
We wszystkich tych przypadkach awarie mogą wystąpić przez nieznany okres, a następnie możemy rozpocząć otrzymywanie pomyślnych odpowiedzi. Jeśli odpowiedzi na błędy zostaną zapisane w pamięci podręcznej, możemy nadal wysyłać odpowiadania użytkownikom, mimo że problem z serwerem backendu został rozwiązany.
Scenariusz 2. Przedłużona lub naprawiona awaria backendu/zasobu
Weź pod uwagę, że wiemy, że awarie backendu występują od dłuższego czasu. Przykład: wiesz, że:
- Określony zasób backendu będzie niedostępny przez 1 godzinę
LUB
- serwer backendu jest usunięty/niedostępny na 24 godziny z powodu nagłej awarii witryny, problemy ze skalowaniem, konserwacja, uaktualnienie itp.
Dzięki tym informacjom możemy odpowiednio ustawić czas wygaśnięcia pamięci podręcznej w pamięci podręcznej odpowiedzi , dzięki czemu nie przechowujemy odpowiedzi o błędach w pamięci podręcznej przez dłuższy czas. Jednak gdy Serwer/zasób backendu jest ponownie dostępny, trzeba będzie zmodyfikować zasadę, aby uniknąć buforowania odpowiedzi na błędy. Dzieje się tak, ponieważ w przypadku wystąpienia tymczasowej/jednorazowej awarii backendu serwer, odpowiedź będzie przechowywana w pamięci podręcznej, aż do rozwiązania problemu przedstawionego w scenariuszu 1 powyżej.
Wpływ
- Odpowiedzi na błędy z pamięci podręcznej mogą spowodować wysłanie odpowiedzi na błąd nawet po wystąpieniu problemu rozpoznano na serwerze backendu
- Użytkownicy mogą poświęcać wiele czasu na rozwiązanie problemu, nie wiedząc, że jest to spowodowane zapisywaniem odpowiedzi w pamięci podręcznej z serwera backendu.
Sprawdzona metoda
- Nie zapisuj odpowiedzi na błędy w pamięci podręcznej odpowiedzi. Upewnij się, że parametr
Element
<ExcludeErrorResponse>
jest ustawiony natrue
w: Zasada ResponseCache, aby zapobiec zapisywaniu odpowiedzi błędów w pamięci podręcznej, jak pokazano w poniższym kodzie . Na w przypadku tej konfiguracji będą wyświetlane tylko odpowiedzi na domyślne kody powodzenia 200–205 (chyba że kody powodzenia) są zapisywane w pamięci podręcznej.<!-- /antipatterns/examples/1-2.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResponseCache async="false" continueOnError="false" enabled="true" name="TargetServerResponseCache"> <DisplayName>TargetServerResponseCache</DisplayName> <CacheKey> <KeyFragment ref="request.uri" /> </CacheKey> <Scope>Exclusive</Scope> <ExpirySettings> <TimeoutinSec ref="flow.variable.here">600</TimeoutinSec> </ExpirySettings> <CacheResource>targetCache</CacheResource> <ExcludeErrorResponse>true</ExcludeErrorResponse> </ResponseCache>
- Jeśli z jakiegoś konkretnego powodu wymagasz zapisywania odpowiedzi na błędy w pamięci podręcznej,
może określić maksymalny/dokładny czas, przez jaki błąd będzie występował (jeśli
możliwe):
- Ustaw odpowiednio czas wygaśnięcia, aby odpowiedzi o błędach nie były zapisywane w pamięci podręcznej jest dłuższy niż czas, przez jaki błąd jest widoczny.
- Użyj zasady ResponseCache, aby zapisać w pamięci podręcznej odpowiedzi na błędy bez
<ExcludeErrorResponse>
element.
Zrób to tylko wtedy, gdy masz absolutną pewność, że awaria serwera backendu nie dotyczy krótki/tymczasowy okres.
- Apigee nie zaleca buforowania odpowiedzi 5xx z serwerów backendu.