Implementace mezipaměti úrovně 2

Tvůrce rozhraní DATA API dlouho podporujeL1 mezipaměť v paměti a hlavičky požadavků HTTP související s mezipamětí, jako je no-store, no-cachea only-if-cached vliv na chování mezipaměti.

Mezipaměť úrovně 2L2 () rozšiřuje ukládání do mezipaměti nad rámec místního procesu přidáním vrstvy distribuované mezipaměti. Díky L2tomu je možné opakovaně používat výsledky uložené v mezipaměti napříč několika instancemi DAB a dokáže přežít restartování jednotlivých kontejnerů. Díky tomu se bezstavová nasazení cítí bezstavové ve všech správných způsobech.

Výhody mezipaměti úrovně 2

Mezipaměť úrovně 2 použijte, pokud chcete:

  • Sdílení výsledků uložených v mezipaměti napříč instancemi DAB s horizontálním navýšením kapacity
  • Omezení doby odezvy databáze pro opakované čtení
  • Udržujte bezstavové kontejnery teplé po recyklaci nebo opětovném nasazení
  • Zvýšení výkonu úloh náročných na čtení
  • Účast v mezipaměti oborů názvů s oddíly

Konfigurace nastavení mezipaměti modulu runtime

Mezipaměť úrovně 2 je nakonfigurovaná globálně v rámci runtime.cache. Blok mezipaměti modulu runtime umožňuje ukládání do mezipaměti, nastaví výchozí hodnotu TTL (Time to Live) a konfiguruje zprostředkovatele distribuované mezipaměti.

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

Vlastnosti modulu runtime

Vlastnictví Description
enabled Umožňuje globální podporu mezipaměti.
ttl-seconds Nastaví výchozí dobu mezipamětí v sekundách.
level-2.enabled Zapne úroveň distribuované mezipaměti.
level-2.provider Vybere zprostředkovatele distribuované mezipaměti. Aktuálně redis se podporuje.
level-2.connection-string Připojovací řetězec instance Redis.
level-2.partition Volitelný obor názvů pro klíče Redis a kanál backplane. Stejné místo v distribuované mezipaměti sdílejí jenom kontejnery, které používají stejný oddíl.

Konfigurace chování mezipaměti specifické pro entitu

Entity můžou přepsat chování globální mezipaměti. Pomocí bloku entity cache povolte ukládání do mezipaměti, nastavte vlastní hodnotu TTL a zvolte úroveň mezipaměti.

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

Vlastnost cache.level

Slouží cache.level k řízení úrovní mezipaměti, které entita používá.

Hodnota Description
L1 Pouze mezipaměť v paměti. Rychlé a místní prostředí pro aktuální proces DAB.
L1L2 Mezipaměť v paměti plus distribuovaná mezipaměť. Tato úroveň je výchozí hodnotou pro entity uložené v mezipaměti.

Pokud L2 není povolen globálně, entita nakonfigurovaná s chováním L1L2 se chová jako L1.

Jak L1L2 funguje

Návod

TL; DRL1L2 = Request → L1 → L2 → database → L2 → L1 → Response

Ve výchozím nastavení používá entita s povolenou ukládáním do mezipaměti úroveň L1L2.

  • L1 je mezipaměť v paměti pro jednotlivé procesy.
  • L2 je vrstva distribuované mezipaměti, v současné době Redis a backplane pro soudržnost mezi instancemi.

Nejprve se při vyhledávání mezipaměti pomocí L1L2 provádí kontrola L1. Při neúspěšné L1 chybě zkontroluje L2 , jestli je globální povolené a nakonfigurované ukládání do mezipaměti úrovně 2. Pokud se položka nenajde v žádné vrstvě, DAB spustí databázový dotaz. Výsledek se pak uloží do obou L1 a L2.

To znamená:

  • Budoucí požadavky na stejnou instanci se obsluhují z místního prostředí. L1
  • Požadavky na jiné instance mohou číst L2 a propagovat vstup do vlastních L1
  • Pokud se kontejner restartuje, neúspěšná odezva, za L2 kterou následuje hit, L1 se stále může vyhnout odezvě databáze.

Tato kombinace poskytuje teplou distribuovanou mezipaměť napříč škálovaným nebo recyklovanými instancemi.

Podpora Redis

Redis je aktuální zprostředkovatel pro mezipaměť úrovně 2. Pro tento scénář je dobře vhodný, protože podporuje:

  • Sdílený přístup napříč několika instancemi DAB
  • Vypršení platnosti klíče pro ukládání do mezipaměti založené na hodnotě TTL
  • Rychlé čtení a zápisy pro úlohy s vysokou propustností
  • Koordinace backplane napříč instancemi

Dělené prostory mezipaměti

Pomocí volitelného partition nastavení můžete izolovat aktivitu distribuované mezipaměti. Jazyk DAB používá hodnotu oddílu k oboru názvů klíčů Redis a kanálu backplane. Do stejného prostoru distribuované mezipaměti se účastní jenom kontejnery, které sdílejí stejný oddíl.

Toto nastavení je užitečné, když chcete:

  • Oddělení produkčního a neprodukčního provozu
  • Izolace tenantů nebo prostředí
  • Zabránění sdílení položek uložených v mezipaměti nesouvisejícími službami

Viz také