GH GambleHub

Tecnologia e infrastruttura di → Livello e storage dei dati

Livelli di cache e storage

1) Perché hai bisogno di una cache a più livelli

Kesh è un breve percorso di risposta senza andare nei sottosistemi «costosi» (database, API esterne, reti). La stratificazione distribuisce il carico di lavoro: il browser CDN/edge lo strato applicativo il del database/ . Gli obiettivi sono ridurre il P95/P99, scaricare origin, resistere più forte ai picchi e pagare byte.

2) Mappa dei livelli di cache

1. Браузер: `Cache-Control`, `ETag`, `Last-Modified`, `stale-while-revalidate`.
2. CDN/Edge: TTL/ключ, Vary, Signed URLs, image-resize; tiered/shield.
3. API Gateway/Service Mesh: cassetta di risposta di breve durata su GET sicuro.
4. Applicazione (in-process): LRU/LFU, near-cache per chiavi hot, millisecondi.
5. Cassetto distribuito (Redis/Memcached) - Livello principale per l'altoparlante.
6. Cache database: buffer Pg/Innodb, PgBouncer multiplexing, materialization views.
7. Gli store su disco/oggetti sono precomputed snapshots, blob-cash (ad esempio S3 + CDN).

Principio: "Più vicino all'utente, più breve è TTL e meno personalizzazione; più vicino ai dati, più ricco è la politica di consistenza".

3) Pattern di cache

Cache-Aside (Lazy) - Leggiamo il → a MISS, e lo mettiamo nella →. Semplice, dà il controllo TTL.
Read-Through - L'applicazione legge attraverso una cache che tira da una sorgente. Facile centralizzare le regole.
Write-Through - La scrittura va alla cache e alla sorgente immediatamente. Più consistente, ma più costosa.
Write-Back (Write-Behind) - Scriviamo nella cache e l'origine viene aggiornata asincrona (coda). Alta velocità, garanzia di spedizione e idepotenza.
Refresh-Ahead: le chiavi «top» aggiornano il valore prima della scadenza della TTL.

Dove: carte di gioco/catalogo - cache-aside/read-through; contatori/liderboard - write-back + CRDT/aggregazioni; riferimenti valute/limiti - read-through con TTL controllato.

4) Chiavi, segmentazione e neoming

Шаблон: `domain:entity:{id}:v{schema}|region={R}|currency={C}|lang={L}`.
Includere solo ciò che cambia realmente la risposta (regione, valuta, lingua, versione dello schema).
Versioning diagrammi - In caso di modifiche incompatibili, aumentare «vN» in chiave evitando purge di massa.
Namespacing prodotto/tenant: 'tennis: {t}:...' è critico per il multi-tennis.
Il filtro bloom per l'esistenza della chiave può ridurre le escursioni all'origine.

5) TTL, freschezza e invalidità

Matrice TTL:
  • statica (file hashtag): 30-365 giorni + 'immutable';
  • cataloghi/banner: 5-60 minuti + 'stale-while-revalidate';
  • liderboard/quotazione: 2-15 secondi;
  • riferimenti (valute/limiti): 1-10 minuti.
  • Disabilità eventi: pubblichiamo'product. updated → disabilità chiave/prefisso.
  • Tag-based purge - Pulizia di gruppo per tag (rilascio promo/catalogo).
  • Soft-Expiry - Al termine della TTL, restituiamo l'antiquato comè stale ', contemporaneamente aggiorniamo (SWR/SIE).
  • Versioned Keys> purge di massa: più economico e sicuro.

6) Stampede, chiavi «hot» e competizione

Dogpile/Stampede protezione:
  • Single-flight (sollest coalescing) - Un leader aggiorna la chiave, gli altri attendono.
  • TTL jitter: smontare le scadenze evitando il crollo uninominale.
  • SWR locale: restituiamo il valore scaduto all'utente e aggiorniamo lo sfondo.
Hot Keys:
  • Replica la chiave hot in più slot «key # 1.. N» distribuito dalla lettura;
  • near-cache nella memoria del processo
  • prewarm/refresh-ahead prima dei picchi (tornei/partite).
  • Limiti per concarrance aggiornamenti per chiavi pesanti.

7) Consistenza e livelli crociati

Write-invalidate - Durante la scrittura all'origine, invalidare sincronicamente le chiavi corrispondenti (pub/sub).
Read-repair - In caso di soluzione temporanea, aggiornare la cache con un valore corretto.
Eventual vs Strong: transazioni di denaro critiche direttamente/con TTL breve; Vetrine UI e statistiche - avvenual.
CRDT/aggregatori: per i contatori/classificatori distribuiti - strutture «merge-safe» (G-Counter, Top-K sui flussi).
Disabilità a cascata: l'aggiornamento del «gioco» disabilita la scheda + elenco + cache raccomandata personalizzata.

8) Serializzazione, compressione e formato

Formati: protobuf/MessagPack più veloce di JSON; per CDN/browser - JSON con Brotli.
Compressione Redis: è vantaggioso per gli oggetti> 1-2 KB, ma tieni d'occhio la CPU.
Partial responses/campi su richiesta: meno byte, meno TTFB e RAM.

9) Criteri di espulsione e dimensioni

LRU (impostazione predefinita) - Sicuro; LFU è meglio per contenuti «popolari».
Dimensioni chiavi/valori - Tieni sotto controllo (metriche «avg value size», «max»).
Quote di namespace/tenant in modo che un prodotto non «mangia» l'intero kash.

10) Sicurezza e PII/PCI

Dati personali/finanziari: non memorizzare su CDN/edge e su livelli comuni; usate i token/proiezioni.
Crittografia dei valori sensibili in Redis tramite client-side crypto (con attenzione alle perdite di controllo TTL).
ACL rigorose e isolamento delle reti; NAT/IP fissi per egress ai provider.

11) Osservabilità e CLO

Metriche:
  • Hit Ratio (livelli e prefissi), Origin Offload.
  • TTFB/P95/P99 prima/dopo la macchia, Latency Redis.
  • Evictions, OOM, keyspace hits/misses.
  • Stampede rate (percentuale di aggiornamenti paralleli), refresh time.
  • Stale served % и Freshness lag.
Esempi SLO:
  • Il catalogo dei giochi è Hit Ratio, 85%, TTFB P95, 150 ms (edge).
  • API: Revalidation-hit 60%, P95 200 ms.
  • Redis: P99 ≤ 5 ms, non più dell '1% all'ora.

12) FinOps: costo della cache

$/GB-mese RAM vs $/RPS origin - Calcola il punto di ritorno.
Offload ed egress: CDN + Redis riducono il traffico in uscita dalla regione-origin.
Image/WebP/AVIF e denormalizzazione fanno risparmiare più byte.
Limitate «care MISS», analista di byte x MISS x Regione.

13) Esempi (frammenti)

13. 1 Cache-Aside con single-flight (pseudocode)

python def get(key, ttl, loader):
val = redis. get(key)
if val: return val with single_flight (key): # only one updates val = redis. get (key) # double check if val: return val data = loader () # request to source redis. setex(key, ttl_with_jitter(ttl), serialize(data))
return data

13. 2 Pubblicazione invalidità per evento

json
{
"event": "game. updated",
"game_id": "g123",
"affected": ["catalog:list:region=TR", "game:card:g123:"]
}

La consolle è iscritta al canale e rende «DEL »/« PUBLISH» le chiavi/tag corrispondenti.

13. 3 Chiave con la versione di schema e locale


game:card:v2:id=g123    region=BR    currency=BRL    lang=pt-BR

14) Assegno foglio di implementazione

1. Mappa dei livelli di cache e matrice TTL (statico/semistatico/API).
2. Nayming chiavi: dominio, versione del circuito, locale/regione/valuta, tenant.
3. Seleziona un pattern per-endpoint (aside/read-through/write-through/back).
4. SWR/SIE, single-flight e TTL-jitter contro stampede.
5. Disabilità eventi (pub/sub), tag-purge per gruppi.
6. Near-cache per chiavi «hot» e prewarm prima dei picchi.
7. Formati e compressione (protobuf/MsgPack, Brotli), controllo delle dimensioni.
8. Regole LRU/LFU, quote namespace/tenant.
9. SLO/метрики: hit ratio, latency, evictions, stale %, freshness lag.
10. Sicurezza: no-store per personale, tornizzazione, rete/ACL.

15) Anti-pattern

«no-cache» «per sicurezza» e gli abbandoni di TTL - offload zero.
La chiave include tutte le query/intestazioni dell'esplosione della cardinalità.
Purge di massa «tutto CDN/Redis» a ogni comunicato.
Nessuna protezione da stampede e una singola interruzione delle «chiavi top».
Comune unico Redis senza quote/isolamento; «hot» tenant si mangia tutto.
Memorizzazione delle risposte personali a edge/CDN.
Nessuna telemetria freshness/evictions, controllo cieco.

16) Contesto iGaming/fintech: note pratiche

Liderboard/rating: TTL 2-10 c, aggregate-thread + CRDT, SWR in caso di guasti.
Catalogo giochi/banner: CDN + Redis; chiave: regione/valuta/lingua; disabilità con tag promo: update.
Stato di pagamento: nessuna cache sul percorso di scrittura; lettura - TTL breve (≤3 -5 c) o richiesta diretta.
Le risposte KYC/AML sono: nascondete i derivati non-PII (states), non memorizzate immagini/documenti in Redis.
Percorso VIP: singolo namespace/pool Redis, servizio prioritario.

Totale

Una forte strategia di kash è l'architettura dei livelli, i pattern di aggiornamento corretti, la TTL/invalidità elaborata, la resistenza alle stampe, le chiavi e le versioni accurate e l'osservabilità e la FinOps. Seguendo questi principi, si stabilizzano le code P95/P99, si riduce la pressione sulle fonti e si ottiene un costo prevedibile di millisecondi, esattamente dove ciò è più importante per il prodotto e il business.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.