Pular para o conteúdo

apps/patterns/bulkhead-isolation

003 · Padrões Fundamentais · ≈ 5 min de estudo

Bulkhead Isolation

Divide os recursos de chamada em compartimentos independentes: cada serviço downstream tem seu próprio pool de slots e uma fila limitada. Um serviço lento esgota só o próprio pool, e o excedente é rejeitado na hora em vez de acumular. Use quando uma dependência lenta não pode arrastar as outras operações.

passos
6
arquivos
7
teste
1
tecnologias
4
Lógica puraTypeScriptBunElysiaStryker
Baixar cartão

Cenário

Plataforma de pagamentos processa 8 PIX em sequência rápida. A análise de fraude demora 900 ms: o pool dela satura, dois PIX esperam na fila e os demais são rejeitados na hora para revisão manual. O processamento de pagamentos nunca espera atrás da fraude.

Planta

Fluxo
7/7
PIXPool pagamento:3 slots, fila 4Pool fraude: 2slots, fila 2Pool notificação:5 slots, fila 5payment API :4113fraud API :4114 (lenta)notification API :4115Shed load: PIX retidopara revisão manualadquire slotPOST /paymentssegue paraPOST /fraud-checksfila cheia: rejeitasegue paraPOST /notifications
7

7 passos — reproduza para seguir o fluxo

Como funciona

6 passos

Pools isolados contêm a falha local.

Esconde cada passo: lembre antes de tocar para revelar.

  1. 01

    Serviços reaisdemo.ts sobe pagamento, fraude e notificação como processos Elysia separados, chamados por fetch()

  2. 02

    Um pool por serviçoSlots e profundidade de fila dimensionados pela criticidade (PoolBulkhead(3, 4))

  3. 03

    AquisiçãoA chamada pega um slot livre antes do fetch(); sem slot, espera na fila em ordem FIFO

  4. 04

    Shed loadCom a fila no limite, ErrorBulkheadFull na hora — fila ilimitada viraria memória e latência sem teto

  5. 05

    Liberação em `finally`O slot volta mesmo quando a chamada falha e passa direto ao próximo da fila

  6. 06

    IsolamentoA fraude saturada não consome slot do pool de pagamento

apps/patterns/bulkhead-isolation

7 arquivos

src/

  • pool_bulkhead.tsPoolBulkhead: semáforo com fila limitada e shed load
  • pool_bulkhead.test.tstesteLimites de slot e de fila, FIFO, liberação em falha, isolamento
  • api_payment.tsServiço de pagamento (porta 4113)
  • api_fraud.tsServiço de fraude (porta 4114)
  • api_notification.tsServiço de notificação (porta 4115)
  • demo.tsdemoSobe os 3 serviços e processa 8 PIX pelos pools

./

  • stryker.config.jsoninfraMutação sobre src/pool_bulkhead.ts

Executar · só Bun

  1. bun install# dependências
  2. bun run demo# roda o cenário

Testes: bun run test; mutação: bun run test:mutation.

Requisitos
Bun

Por que se relacionam

Teste rápido

Qual é o próximo passo depois de Bulkhead Pattern?

Próximo projeto · Padrões FundamentaisChaos Engineering
Esc

↑ ↓ navegarEnter abrir191 resultados