Pular para o conteúdo

apps/scalability/load-balancing

134 · Escalabilidade & Infraestrutura · ≈ 5 min de estudo

Load Balancing

Distribui as requisições entre várias instâncias de um serviço, no próprio cliente: o balanceador escolhe entre as instâncias saudáveis por um algoritmo, tira do pool a que falha e tenta outra, devolve ao pool a que se recupera, e drena uma instância antes de removê-la. Use quando um serviço tem várias réplicas e nenhuma pode saturar nem receber tráfego depois de cair.

passos
5
arquivos
3
testes
0
tecnologias
3
Lógica puraTypeScriptBunElysia
Baixar cartão

Cenário

Três instâncias do processador de PIX atendem o banco. Uma delas tem o dobro de CPU das outras e deve receber mais; clientes com sessão no servidor devem voltar sempre à mesma instância. No meio do tráfego a pix-2 começa a falhar: nenhum PIX pode se perder por isso, e ela deve voltar quando se recuperar. Antes de um deploy, a instância em manutenção sai do pool sem cortar o PIX que está processando.

Planta

Fluxo
5/5
Cliente de PIXbalancer_clientpix-1pix-2pix-3round-robin,least-connections,weighted 5-1-1ou afinidadefalhou: forado pool,PIX repetidoem outraprobe GET /healthreadmite
5

5 passos — reproduza para seguir o fluxo

Como funciona

5 passos

Distribui requisições entre instâncias.

Esconde cada passo: lembre antes de tocar para revelar.

  1. 01

    Round-robin gira entre as saudáveis; least-connections escolhe a de menos requisições em voo; weighted usa o round-robin suave do Nginx (pesos 5-1-1 dão a a b a c a a); afinidade usa hashing de rendezvous — o cliente fica na mesma instância e, se ela sai, só os clientes dela mudam

  2. 02

    Health check passivoRequisição com falha de conexão, timeout ou 5xx tira a instância do pool e o PIX vai para outra

  3. 03

    Cada instância é tentada no máximo uma vez por requisição; sem nenhuma saudável, ErrorNoInstance na hora — sem tempestade de retries

  4. 04

    Health check ativoprobe consulta /health de todas e readmite as que voltaram

  5. 05

    drain marca a instância: nenhuma requisição nova vai para ela, e ela sai do pool quando as em voo terminam

Trade-offs

O que se ganha, o que se paga

Algoritmo Vantagem Desvantagem
Round-robin Simples e uniforme Ignora a carga real de cada instância
Least-connections Acompanha a carga em voo Precisa contar conexões ativas
Weighted Respeita capacidades diferentes Pesos mantidos à mão
Afinidade Sessão no servidor continua válida Instância que cai derruba as sessões dela

apps/scalability/load-balancing

3 arquivos

src/

  • balancer_client.tsBalanceador: seleção, retry limitado, health check passivo e ativo, drenagem
  • selection_balancer.tsOs quatro algoritmos de seleção
  • instance_pix.tsInstância do processador de PIX

Executar · só Bun

  1. bun install# dependências
  2. bun run demo# roda o cenário
  3. bun run test# testes unitários
Requisitos
Bun

Por que se relacionam

Teste rápido

Qual é o próximo passo depois de Load Balancing?

Próximo projeto · Escalabilidade & InfraestruturaCaching
Esc

↑ ↓ navegarEnter abrir191 resultados