Udostępnij za pośrednictwem


Implementowanie pamięci podręcznej poziomu 2

Konstruktor interfejsu API danych długo obsługiwany poziom 1 (L1) w pamięci podręcznej i nagłówki żądań HTTP związane z pamięcią podręczną, takie jak no-store, no-cachei only-if-cached wpływają na zachowanie pamięci podręcznej.

Pamięć podręczna poziomu 2 (L2) rozszerza buforowanie poza proces lokalny przez dodanie warstwy rozproszonej pamięci podręcznej. W systemie L2buforowane wyniki mogą być ponownie używane w wielu wystąpieniach daB i mogą przetrwać ponowne uruchomienie poszczególnych kontenerów, co sprawia, że wdrożenia bezstanowe czują się mniej bezstanowe we wszystkich właściwych sposobach.

Zalety pamięci podręcznej poziomu 2

Użyj pamięci podręcznej poziomu 2, jeśli chcesz:

  • Udostępnianie buforowanych wyników w przypadku skalowanych w poziomie wystąpień języka DAB
  • Zmniejszanie rund bazy danych w przypadku powtarzających się operacji odczytu
  • Zachowaj bezstanowe pojemniki ciepłe po recyklingu lub ponownym wdróż
  • Zwiększanie wydajności obciążeń z dużym obciążeniem odczytu
  • Udział pamięci podręcznej przestrzeni nazw z partycjami

Konfigurowanie ustawień pamięci podręcznej środowiska uruchomieniowego

Pamięć podręczna poziomu 2 jest konfigurowana globalnie w obszarze runtime.cache. Blok pamięci podręcznej środowiska uruchomieniowego umożliwia buforowanie, ustawia domyślny czas wygaśnięcia (TTL) i konfiguruje dostawcę rozproszonej pamięci podręcznej.

{
  "runtime": {
    "cache": {
      "enabled": true,
      "ttl-seconds": 30,
      "level-2": {
        "enabled": true,
        "provider": "redis",
        "connection-string": "localhost:6379",
        "partition": "prod-api"
      }
    }
  }
}

Właściwości środowiska uruchomieniowego

Majątek Opis
enabled Umożliwia obsługę pamięci podręcznej globalnie.
ttl-seconds Ustawia domyślny czas wygaśnięcia pamięci podręcznej w sekundach.
level-2.enabled Włącza warstwę rozproszonej pamięci podręcznej.
level-2.provider Wybiera dostawcę rozproszonej pamięci podręcznej. Obecnie redis jest obsługiwana.
level-2.connection-string Parametry połączenia dla wystąpienia usługi Redis.
level-2.partition Opcjonalna przestrzeń nazw dla kluczy usługi Redis i kanał płaszczyzny wewnętrznej. Tylko kontenery używające tej samej partycji współużytkują ten sam rozproszony obszar pamięci podręcznej.

Konfigurowanie zachowania pamięci podręcznej specyficznej dla jednostki

Jednostki mogą zastąpić globalne zachowanie pamięci podręcznej. Użyj bloku jednostki cache , aby włączyć buforowanie, ustawić niestandardowy czas wygaśnięcia i wybrać poziom pamięci podręcznej.

{
  "entities": {
    "Products": {
      "source": "dbo.Products",
      "cache": { "enabled": true, "ttl-seconds": 120, "level": "L1L2" }
    },
    "Orders": {
      "source": "dbo.Orders",
      "cache": { "enabled": true, "level": "L1" }
    }
  }
}

Właściwość cache.level

Służy cache.level do kontrolowania warstw pamięci podręcznej używanej przez jednostkę.

Wartość Opis
L1 Tylko pamięć podręczna w pamięci. Szybkie i lokalne do bieżącego procesu daB.
L1L2 W pamięci plus rozproszona pamięć podręczna. Ten poziom jest domyślny dla buforowanych jednostek.

Jeśli L2 nie jest włączona globalnie, jednostka skonfigurowana z L1L2 zachowaniem jako L1.

Jak działa L1L2

Wskazówka

TL; ODZYSKIWANIE po awariiL1L2 = żądanie → L1 → L2 → bazy danych → L2 → odpowiedzi L1 →

Domyślnie jednostka z włączonym buforowaniem używa poziomu L1L2.

  • L1 to pamięć podręczna w pamięci dla każdego procesu.
  • L2 to warstwa rozproszonej pamięci podręcznej, obecnie Redis, oraz płaszczyzna wsteczna dla spójności między wystąpieniami.

Za pomocą metody L1L2 wyszukiwanie pamięci podręcznej najpierw sprawdza L1. W przypadku błędu L1 sprawdza L2 , czy buforowanie na poziomie 2 jest globalnie włączone i skonfigurowane. Jeśli wpis nie zostanie znaleziony w żadnej warstwie, daB wykonuje zapytanie bazy danych. Wynik jest następnie przechowywany w elementach L1 i L2.

Oznacza to:

  • Przyszłe żądania w tym samym wystąpieniu są obsługiwane z lokalnego L1
  • Żądania dotyczące innych wystąpień mogą odczytywać L2 i promować wpis we własnym L1
  • W przypadku ponownego uruchomienia kontenera, po której następuje L2 trafienie, L1 nadal może uniknąć rundy bazy danych

Ta kombinacja zapewnia gorącą rozproszoną pamięć podręczną w skalowanych w poziomie lub z recyklingu wystąpień.

Obsługa usługi Redis

Usługa Redis jest bieżącym dostawcą pamięci podręcznej poziomu 2. Jest on odpowiedni dla tego scenariusza, ponieważ obsługuje:

  • Dostęp współużytkowany w wielu wystąpieniach języka DAB
  • Wygaśnięcie klucza dla buforowania opartego na czas wygaśnięcia
  • Szybkie operacje odczytu i zapisu dla obciążeń o wysokiej przepływności
  • Koordynacja płaszczyzny wstecznej między wystąpieniami

Partycjonowane miejsca pamięci podręcznej

Użyj opcjonalnego partition ustawienia, aby odizolować działanie rozproszonej pamięci podręcznej. Język DAB używa wartości partycji do kluczy redis przestrzeni nazw i kanału płaszczyzny wstecznej. Tylko kontenery, które współużytkują tę samą partycję, uczestniczą w tym samym rozproszonym miejscu pamięci podręcznej.

To ustawienie jest przydatne, gdy chcesz:

  • Oddzielanie ruchu produkcyjnego i nieprodukcyjnego
  • Izolowanie dzierżaw lub środowisk
  • Zapobieganie udostępnianiu buforowanych wpisów niepowiązanych usług

Zobacz także