Demonstração de worker_threads no Node.js, comparando uma API Express que calcula Fibonacci na thread principal com outra que delega o cálculo a um worker.
- Node.js 18 ou superior
- npm
npm installO projeto expõe duas versões do mesmo servidor. Rode cada uma em um terminal separado.
O cálculo de Fibonacci roda na thread principal e bloqueia o event loop enquanto executa.
npm run start:sequencialAcesse: http://localhost:300
O cálculo é feito em um worker via worker_threads, liberando a thread principal para outras requisições.
npm run start:paraleloAcesse: http://localhost:3000
Certifique-se de que as portas 300 e 3000 estejam livres antes de subir os servidores.
| Método | Rota | Descrição |
|---|---|---|
| GET | /status |
Health check ({ "status": "ok" }) |
| GET | /fibonacci/:n |
Retorna o n-ésimo número de Fibonacci |
curl http://localhost:3000/status
curl http://localhost:3000/fibonacci/10Resposta de /fibonacci/10:
{ "n": 10, "fibonacci": 55 }Para comparar o comportamento sob carga, dispare um cálculo pesado (por exemplo n=45) e, em seguida, chame /status na versão sequencial e na paralela.
src/
├── sequencial.ts # API sem worker (porta 300)
├── paralelo.ts # API com worker_threads (porta 3000)
└── fibonacci.worker.ts # Worker que executa o cálculo
| Script | Comando |
|---|---|
npm run start:sequencial |
Sobe a versão na porta 300 |
npm run start:paralelo |
Sobe a versão na porta 3000 |