Cache -me se puder: Design Patterns for Performance
Na Parte 3 da nossa série de design de sistemas, estamos enfrentando cache e balanceamento de carga – os heróis desconhecidos de desempenho. Sem eles, os sistemas desmoronam em escala. Abordaremos: Cache – App/DB/CDN; Convalidação de cache do cache de gravação/gravação-TTLS, versão, balanceamento de carga de proteção de carimbo-L4/L7, Round-robin, mínimos conexões, hash 1. Cache tl; dr: cache é sua primeira alavanca para escala. Use-o em todos os lugares, mas conheça as compensações. Cache de App: In-memory (Redis, Memcached). Ultra-rápido, mas volátil. Cache do db: consulta ou cache de objeto para descarregar consultas quentes. Cache do CDN: empurre ativos estáticos perto dos usuários. Estratégias: Escreva: Escreva para cache + dB simultaneamente (seguro, consistente e mais lento) Write-Back: Escreva para cache primeiro, sincronize para DB mais tarde (rápido e arriscado se falhas de cache) ttl (tempo para viver): expiram dados obsoletos automaticamente 👉 Exemplo: um exemplo de Homepage Caches para os 30 anos-de mil. 👉 Entrevista de entrevista: “Como você escalaria um serviço pesado de leitura?” – O cache é a primeira resposta. 2. Convalidação do cache tl; dr: A parte mais difícil do cache não é o cache – é invalidação. TTL: Padrão seguro, mas pode servir dados obsoletos. Versão: altere a tecla de cache quando as atualizações de dados (por exemplo, usuário: v2: 123) Proteção de Stampede: use bloqueio ou solicite coalescência para que vários clientes não martelem o banco de dados quando o cache expirar. 👉 Exemplo: se os usuários 1M atualizam quando um cache expirar, isso é uma degraus de cache. Use TTLs com estufa ou atualização assíncrona. 👉 Tie-in da entrevista: Eles perguntarão “Qual é a parte mais difícil sobre o cache?” – Resposta: invalidação e consistência. 3. Balanceamento de carga TL; DR: Os balanceadores de carga espalham solicitações entre servidores e oculam falhas. L4 (transporte): saldos com base em IP/porta. Simples, rápido. L7 (aplicação): mais inteligente – rotas com base em cabeçalhos, cookies, caminhos. Algoritmos: Round Robin: Mesmo conexões de distribuição: Envie ao servidor com menos solicitações ativas hash: sessões pegajosas (por exemplo, mesmo usuário → Mesmo servidor) 👉 Exemplo: o aplicativo de comércio eletrônico usa L7 lb para rota /imagens → CDN, /checkout → Pagamento. 👉 Entrevista Tie-in: “Como você lida com o tráfego desigual nos servidores?” -Melhor conexão ou balanceamento de carga ponderada. ✅ Takeaways cache onde dói mais: consultas quentes, ativos estáticos, pontos de extremidade pesados de leitura A invalidação é o verdadeiro desafio; Planejar estratégias de balanceamento de carga inicial é fundamental para a justiça, resiliência e lógica de roteamento 💡 Pergunta prática: “Projete a estratégia de cache para uma linha do tempo do Twitter. Como você evitaria o cache de estampa durante os eventos de tendência?”
Fonte