Filas, Streams e Processamento Assíncrono
Nesta lição, vamos aprender como um sistema lida com trabalho pesado sem deixar o utilizador esperando. A ideia: em vez de fazer tudo agora, você coloca a tarefa em uma fila e a processa em segundo plano. Vamos conhecer queues (filas — uma fila de espera de tarefas, exatamente como uma fila nos corr
System Design (planear como construir um software grande que atende muitas pessoas) é como planear uma cidade: estradas, armazéns, semáforos e equipas de manutenção, para que a cidade continue funcionando bem mesmo no horário de pico mais intenso.
- Processamento assíncrono
- Processar trabalho em segundo plano em vez de fazer o utilizador esperar (assíncrono — "não ao mesmo tempo", ou seja, você não precisa terminar tudo antes de responder). A habilidade central desta lição cobre queues (filas — uma fila de espera de tarefas), streams (um fluxo contínuo de mensagens), retries (tentar novamente em caso de falha), idempotency (para que uma mensagem processada duas vezes não cause dano), e backpressure (uma desaceleração controlada quando chega trabalho demais).
- Trade-off
- Uma escolha consciente que tem tanto um ganho quanto um custo — assim como escolher uma rota: a estrada rápida cobra pedágio, a gratuita demora mais. Em uma entrevista, você explica ao entrevistador ou à entrevistadora o ganho e o custo de cada escolha.
- Métrica operacional
- Um número que mostra se a decisão realmente funciona quando o sistema está no ar e a atender utilizadores reais (produção). Por exemplo: latência (quanto tempo uma resposta demora), taxa de erro (a proporção de requisições que falham), atraso de fila (quantas tarefas estão a esperar na fila), e taxa de acerto do cache (quantas vezes encontramos uma resposta já pronta). Como os mostradores do painel de um carro — eles indicam se está tudo bem.