2. szintű gyorsítótár implementálása

A Data API Builder régóta támogatja az 1. szintű (L1) memóriabeli gyorsítótárat és a gyorsítótárral kapcsolatos HTTP-kérelemfejléceket, például no-storea , no-cacheés only-if-cached a gyorsítótár viselkedésének befolyásolása érdekében.

A 2. szintű (L2) gyorsítótár egy elosztott gyorsítótárréteg hozzáadásával kibővíti a helyi folyamaton túli gyorsítótárazást. A L2gyorsítótárazott eredmények több DAB-példányban is újra felhasználhatók, és túlélhetik az egyes tároló-újraindításokat, így az állapot nélküli üzemelő példányok a megfelelő módon kevésbé érzik magukat állapot nélkülinek.

A 2. szintű gyorsítótár előnyei

A 2. szintű gyorsítótárat a következő esetekben használja:

  • Gyorsítótárazott eredmények megosztása kibővített DAB-példányok között
  • Adatbázis-kerek utak csökkentése ismétlődő olvasások esetén
  • Állapot nélküli tárolók melegen tartása újrahasznosítás vagy újbóli üzembe helyezés után
  • Az írásvédett számítási feladatok teljesítményének javítása
  • Névtér-gyorsítótár részvétele partíciókkal

Futtatókörnyezeti gyorsítótár beállításainak konfigurálása

A 2. szintű gyorsítótár globálisan konfigurálva van a runtime.cache. A futtatókörnyezet gyorsítótár-blokkja engedélyezi a gyorsítótárazást, beállítja az alapértelmezett élettartamot (TTL), és konfigurálja az elosztott gyorsítótár-szolgáltatót.

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

Futtatókörnyezet tulajdonságai

Ingatlan Leírás
enabled Globálisan engedélyezi a gyorsítótár támogatását.
ttl-seconds Az alapértelmezett gyorsítótár élettartamát másodpercek alatt állítja be.
level-2.enabled Bekapcsolja az elosztott gyorsítótárszintet.
level-2.provider Kiválasztja az elosztott gyorsítótár-szolgáltatót. Jelenleg redis támogatott.
level-2.connection-string Kapcsolati sztring a Redis-példányhoz.
level-2.partition Választható névtér a Redis-kulcsokhoz és a háttércsatornához. Csak az azonos partíciót használó tárolók osztják meg ugyanazt az elosztott gyorsítótárterületet.

Entitásspecifikus gyorsítótár-viselkedés konfigurálása

Az entitások felülbírálhatják a globális gyorsítótár viselkedését. Az entitásblokk cache használatával engedélyezheti a gyorsítótárazást, egyéni TTL-t állíthat be, és kiválaszthatja a gyorsítótár szintjét.

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

A cache.level tulajdonság

Az entitás által használt gyorsítótárszintek szabályozására használható cache.level .

Érték Leírás
L1 Csak a memóriabeli gyorsítótárban. Az aktuális DAB-folyamat gyors és helyi beállítása.
L1L2 Memóriában és elosztott gyorsítótárban. Ez a szint a gyorsítótárazott entitások alapértelmezett szintje.

Ha L2 nincs engedélyezve globálisan, a konfigurált L1L2 entitás a következőképpen L1viselkedik.

A L1L2 működése

Jótanács

TL; DRL1L2 = L1 → → L2 → → L2 → L1 → válasz kérése

Alapértelmezés szerint a gyorsítótárazást engedélyező entitások a L1L2 szintet használják.

  • L1 A folyamatonkénti memóriagyorsítótár.
  • L2 az elosztott gyorsítótár rétege, jelenleg Redis, valamint egy háttérsík a példányok közötti koherencia érdekében.

L1L2 Ezzel a gyorsítótár-keresés először ellenőrzi L1. Hiba esetén L1 ellenőrzi L2 , hogy a 2. szintű gyorsítótárazás globálisan engedélyezve van-e és konfigurálva van-e. Ha a bejegyzés egyik rétegben sem található, a DAB végrehajtja az adatbázis-lekérdezést. Az eredmény ezután mind a kettőben, mind L1L2a .

Ez a következőt jelenti:

  • Az ugyanazon példányra vonatkozó jövőbeli kéréseket a helyi rendszer kézbesíti L1
  • A más példányokra vonatkozó kérések elolvashatják L2 és előléptethetik a bejegyzést a sajátjukba L1
  • Ha egy tároló újraindul, egy L1 kihagyás, amelyet L2 egy találat követ, még mindig elkerülheti az adatbázis-utazást

Ez a kombináció meleg elosztott gyorsítótárat biztosít a felskálázott vagy újrahasznosított példányok között.

Redis-támogatás

A Redis a 2. szintű gyorsítótár jelenlegi szolgáltatója. Ebben a forgatókönyvben a következőket támogatja:

  • Megosztott hozzáférés több DAB-példány között
  • Kulcs lejárata TTL-alapú gyorsítótárazáshoz
  • Gyors olvasási és írási műveletek nagy átviteli sebességű számítási feladatokhoz
  • Backplane koordináció a példányok között

Particionált gyorsítótár-szóközök

Az elosztott gyorsítótár-tevékenység elkülönítéséhez használja az opcionális partition beállítást. A DAB a partíció értékét használja a Redis-kulcsok és a háttércsatorna névteréhez. Csak az azonos partícióval rendelkező tárolók vesznek részt ugyanabban az elosztott gyorsítótárterületben.

Ez a beállítás a következő esetekben hasznos:

  • Termelési és nem termelési forgalom elkülönítése
  • Bérlők vagy környezetek elkülönítése
  • A nem kapcsolódó szolgáltatások nem osztják meg a gyorsítótárazott bejegyzéseket

Lásd még