GH GambleHub

Tecnologia e Infraestrutura → Kesh Níveis e armazenamento de dados

Níveis de kesh e armazenamento de dados

1) Por que precisa de um kesh de camadas múltiplas

Kesh é um atalho para responder sem ir para os subsistemas «caros» (BB, API externa, redes). A multiplicidade de camadas distribui a carga: navegador CDN/edge camada de aplicação distribuída banco de dados/armazenamento. Os objetivos são reduzir o P95/P99, descarregar o origin, aguentar os picos e custar o byte.

2) Mapa dos níveis de cajá

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: curta resposta por GET seguro.
4. Aplicativo (in-processo): LRU/LFU, near-cachê para chaves «quentes», milissegundos.
5. Kesh distribuído (Redis/Memcached): camada principal para dinâmica.
6. Cachês BD: tampões Pg/Inodb, PgBouncer multiplexing, materializações views.
7. Ecrãs de disco/objeto: precomputed snapshots, blob-kesh (por exemplo, S3 + CDN).

Princípio: "Quanto mais perto do usuário, mais curto é o TTL e menos personalização; quanto mais perto dos dados, mais rico será a política de consistência".

3) Pattern de cajado

Cachê-Aside (Lazy): Lendo → quando MISS carregamos de uma fonte → colocamos em um caju. Simples, dá controle TTL.
Read-Through: O aplicativo é lido através de kesh que é puxado da fonte. É conveniente centralizar a política.
Write-Through: A gravação vai para e para a origem imediatamente. Mais consistente, mas mais caro por gravação.
Write-Back (Write-Behind): escrevendo em kesh, a origem é atualizada asinhronalmente (fila). Alta velocidade, são necessárias garantias de entrega e idempotidade.
Refresh-Ahead: As chaves de ponta atualizam o valor até TTL expirar.

Onde: cartões de jogo/catálogo - cachê-aside/read-through; contadores/liderbords - write-back + CRDT/agregações; guias de moedas/limites - read-through com TTL controlado.

4) Chaves, segmentação e naiming

Шаблон: `domain:entity:{id}:v{schema}|region={R}|currency={C}|lang={L}`.
Incluir na chave apenas o que realmente muda a resposta (região, moeda, língua, versão do esquema).
Versionização de diagramas: Em caso de alterações incompatíveis, aumente 'vN' na chave, evitando purge em massa.
Namespacing para produtos/tenantes: 'tenant: Se você não quiser, é crítico para o multi-tenant.
O filtro bloom para «existência de chave» pode reduzir as idas para a origem.

5) TTL, frescor e deficiência

Matriz TTL:
  • estática (arquivos hasteados): 30-365 dias + 'imutable';
  • diretórios/banners: 5-60 minutos + 'stale-while-revalidate';
  • liderbords/cotação: 2-15 segundos;
  • guias (moedas/limites): 1 a 10 minutos.
  • Deficiência de eventos: Publicando 'produt'. updated '→ deficiência de chave de ponto/prefixo.
  • Tag-based purge: limpeza em grupo por marcas de formatação (lançamento promocional/catálogo).
  • Soft-Expiry: Após o TTL, damos o «stale» obsoleto e atualizamos (SWR/SIE).
  • Versioned Keys> purge em massa: mais barato e seguro.

6) Estampede, chaves «quentes» e concorrência

Dogpile/Estampede defesa:
  • Single-flight (request coalescing): um líder atualiza a chave, os outros aguardam.
  • TTL Jitter: Desfalque a caducidade, evitando o colapso de uma pessoa.
  • SWR local: Damos o valor vencido ao usuário e atualizamos.
Hot Keys:
  • replicação da chave «quente» em várias slots «key # 1.. N» distribuída pela leitura;
  • near-cachê na memória do processo;
  • prewarm/refresh-ahead antes dos picos (torneios/jogos).
  • Limites para as atualizações de concarrance para as chaves pesadas.

7) Consistência e camadas cruzadas

Write-invalidate: ao gravar na origem - inválida sincronicamente as chaves correspondentes (pub/sub).
Read-repair: Atualize o kesh com um valor correto.
Eventual vs Strong: transações em dinheiro críticas lendo diretamente/com TTL curto; Vitrines UI e estatísticas - eventual.
CRDT/agregadores: para contadores/classificações distribuídos - estrutura «merge-safe» (G-Counter, Top-K em streaming).
Deficiência em cascata: Atualizar «jogo» inválida cartão + lista + caixa de recomendação personalizada.

8) Serialização, compressão e formato

Formatos: Protobuf/ Pack mais rápido que o JSON; para CDN/navegador - JSON com Brotli.
Compressão Redis: É benéfico para objetos> 1-2 KB, mas siga o CPU.
Partial responses/campos sob demanda: menos bytes → menos TTFB e RAM.

9) Políticas de exclusão e tamanho

LRU (padrão) - seguro; LFU - melhor para conteúdo «popular».
Tamanho das chaves/valores: mantenha controle (métricas 'avg value size', 'max').
Quotas de namespace/tenant para que um produto não «devore» todo o kesh.

10) Segurança e PII/PCI

Dados pessoais/financeiros - Não é baseado em CDN/edge e em camadas comuns; use tokens/projeções.
Criptografia de valores sensíveis no Redis através do cliente-side crypto (com cuidado para perdas de controle TTL).
LCA rigoroso e isolamento de redes; NAT/IP fixo para egress para provedores.

11) Observabilidade e SLO kesha

Métricas:
  • Hit Ratio (camadas e prefixos), Origin Offload.
  • TTFB/P95/P99 antes/depois do caju, Latency Redis.
  • Evictions, OOM, keyspace hits/misses.
  • Estampede rate (proporção de atualizações paralelas), refresh time.
  • Stale served % и Freshness lag.
Exemplos SLO:
  • Catálogo de jogos: Hit Ratio ≥ 85%, TTFB P95 ≤ 150 ms (edge).
  • Guias API Revalidação-hit ≥ 60%, P95 ≤ 200 ms.
  • Redis: P99 operação ≤ 5 ms, evictions no máximo 1% por hora.

12) FinOps: custo do cajá

$/mês GB RAM vs $/RPS origin: conte o ponto de retorno.
Offload e egress: CDN + Redis reduzem o tráfego de saída da região-origin.
Image/WebP/AVIF e denormização oferecem a maior economia de bytes.
Limite «Caros MISS», analista de bytes x Miss x Região.

13) Exemplos (fatias)

13. 1 Cachê-Aside com 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 Publicar deficiência por evento

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

O Consumer está inscrito no canal e faz de «DEL »/« PUBLISH» as chaves/marcas correspondentes.

13. 3 Chave com versão de circuito e local


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

14) Folha de cheque de implementação

1. Mapa dos níveis de cajá e da matriz TTL (estático/semistático/API).
2. Nayming chaves, domínio, versão do circuito, local/região/moeda, tênant.
3. Escolha um pattern per-endpoint (aside/read-through/write-through/back).
4. SWR/SIE, single-flight e TTL-jitter contra estampede.
5. Deficiência de eventos (pub/sub), tag-purge para grupos.
6. Near-cachê para chaves «quentes» e prewarm antes dos picos.
7. Formatos e compressão (protobuf/MsgPack Brotli), controle de tamanho.
8. Políticas LRU/LFU, quotas de namespace/tenant.
9. SLO/метрики: hit ratio, latency, evictions, stale %, freshness lag.
10. Segurança: no-store para pessoal, tocenização, rede/LCA.

15) Anti-pattern

'no-cachê' «por precaução» e desistências da TTL - zero offload.
A chave inclui todos os query/títulos → explosão de radicalidade.
Purge «todo CDN/Redis» em massa a cada lançamento.
Falta de proteção contra estampede e «top chaves» de uma só vez.
Redis comum sem quotas/isolamento; tenant «quente» come todo o caroço.
Cajulação de respostas pessoais para edge/CDN.
Não há telemetria freshness/evictions → controle cego.

16) Contexto iGaming/fintech: notas práticas

Liderbords/classificações: TTL 2-10 s, agregate-fluxo + CRDT, SWR em casos de falhas.
Catálogo de jogos/banners: CDN + Redis; chave: região/moeda/língua; deficiência com marcas de formatação «promo: update».
Estatais de pagamento: sem dinheiro no caminho de gravação; leitura - TTL curto (≤3 -5 c) ou consulta direta.
KYC/AML respostas: Cajue derivativos não-PII (estatais), não guarde imagens/documentos no Redis.
Caminho VIP: nomeado namespace/pool Redis, serviço prioritário.

Resultado

Uma forte estratégia de kesh é a arquitetura de níveis, pattern de atualização corretos, TTL/deficiência elaborada, resistência a estampede, chaves e versões cuidadosas e observabilidade e FinOps. Seguindo estes princípios, você estabiliza as caudas P95/P99, reduz a pressão sobre as fontes e obtém um custo previsível de milissegundos - exatamente onde isso é mais importante para o produto e para o negócio.

Contact

Entrar em contacto

Contacte-nos para qualquer questão ou necessidade de apoio.Estamos sempre prontos para ajudar!

Iniciar integração

O Email é obrigatório. Telegram ou WhatsApp — opcionais.

O seu nome opcional
Email opcional
Assunto opcional
Mensagem opcional
Telegram opcional
@
Se indicar Telegram — responderemos também por lá.
WhatsApp opcional
Formato: +indicativo e número (ex.: +351XXXXXXXXX).

Ao clicar, concorda com o tratamento dos seus dados.