Pular para o conteúdo

apps/scalability/geode

144 · Escalabilidade & Infraestrutura · ≈ 5 min de estudo

Geode

A stack completa — aplicação e banco — replicada em várias regiões, todas atendendo tráfego real. Um roteador manda cada cliente ao nó de menor latência estimada e, quando esse nó cai, ao próximo mais próximo; cada região processa e grava localmente, sem esperar nenhuma outra. Use quando clientes em vários países precisam de baixa latência e de continuidade se uma região cair.

passos
5
arquivos
4
testes
0
tecnologias
5
Infraestrutura realTypeScriptBunElysiaPostgreSQLDocker
Baixar cartão

Cenário

O banco digital opera no Brasil, no México e na Colômbia, cada país com aplicação e banco próprios. Clientes da Argentina e do Peru, sem nó local, são atendidos pelo nó existente mais próximo. Quando a região Brasil cai, clientes brasileiros e argentinos passam a ser atendidos pela Colômbia sem esperar o timeout do nó morto, e cada PIX fica registrado na região que efetivamente o processou.

Planta

Fluxo
9/9
Cliente BRRoteador geodehealth probe 200 msCliente AR, sem noCliente MXNo BRNo MXNo COdb-brdb-mxdb-comais proximomais proximoBR caido: proximomais proximo
9

9 passos — reproduza para seguir o fluxo

Como funciona

5 passos

Usuário atendido pela região mais próxima.

Esconde cada passo: lembre antes de tocar para revelar.

  1. 01

    regionsNearest ordena as regiões pela latência estimada a partir da região do cliente (tabela estática aqui; RTT medido, GeoIP ou anycast em produção)

  2. 02

    Uma sonda de saúde com timeout de 200 ms marca cada nó; nó marcado como fora vai para o fim da fila e só é tentado se nada mais restar

  3. 03

    O roteador tenta o primeiro da fila; falha de conexão, timeout ou 5xx marcam o nó como fora e passam ao próximo

  4. 04

    Cada nó grava o PIX no próprio banco, com a região do cliente e a região que atendeu — nenhuma escrita depende de outra região

  5. 05

    A resposta leva x-served-region, e o roteador guarda onde cada requisição foi processada; sem nenhum nó vivo, 503

Trade-offs

O que se ganha, o que se paga

4 vantagenscada ganho tem um preço4 custos

Vantagens

  • Latência baixa para clientes de vários países

  • Queda de uma região não para o serviço

  • Nó caído é pulado sem custar o timeout

  • Registro de onde cada operação foi processada

Custos

  • Uma stack completa por região para operar

  • Dados ficam espalhados: consolidação exige conciliação entre regiões

  • Sonda de saúde adiciona tráfego e pode marcar nó lento como caído

  • Regras de residência de dados limitam para onde o failover pode ir

apps/scalability/geode

4 arquivos

src/

  • router_geode.tsRoteador: sonda de saúde, ordem por latência, failover e registro da região atendente
  • routing_geode.tsTabela de latência e ordenação com nós fora por último
  • node_region.tsNó regional: processa e grava só no banco da sua região

sql/

  • 01_schema.sqlschemaPIX processados, aplicado em cada banco regional

Executar · com Docker

  1. docker compose up -d --wait# sobe PostgreSQL
  2. cp .env.example .env# variáveis de ambiente
  3. bun install# dependências
  4. bun run demo# roda o cenário
  5. bun run test# integração contra o serviço real
Requisitos
BunDocker
Sobe junto
PostgreSQL

Por que se relacionam

Teste rápido

Qual destes combina com Geode?

Próximo projeto · Segurança & AuditoriaTransação Bancária com Auditoria
Esc

↑ ↓ navegarEnter abrir191 resultados