Application CRUD API on noodejs
git clone https://github.com/evakerrigan/node-crud-api.git
cd node-crud-api
npm install
PORT=4000
npm run start:dev
npm run start:prod
npm run start:multi
method: get
address: 127.0.0.1:4000/api/users
method: post
address: 127.0.0.1:4000/api/users
body: {
"username": "Javascriptoslav",
"age": 28,
"hobbies": ["travels"]
}
method: get
address: 127.0.0.1:4000/api/users/${userID}
method: put
address: 127.0.0.1:4000/api/users/${userID}
body: {
"username": "test name2",
"age": 100,
"hobbies": ["travels"]
}
method: delete
address: 127.0.0.1:4000/api/users/${userID}
При запуске в многопроцессном режиме (npm run start:multi), приложение работает следующим образом:
- Создаётся балансировщик нагрузки на порту, указанном в переменной окружения PORT (по умолчанию 4000)
- Запускаются рабочие процессы на последовательных портах (PORT+1, PORT+2, и т.д.) в количестве (CPU-1)
- Балансировщик распределяет запросы между рабочими процессами, используя алгоритм Round-robin
- Данные хранятся в памяти процесса и синхронизируются между всеми рабочими процессами через сообщения от основного процесса
Пример с PORT=4000 и 4 CPU:
- Балансировщик нагрузки работает на localhost:4000/api
- Рабочие процессы работают на:
- localhost:4001/api
- localhost:4002/api
- localhost:4003/api
- Запросы распределяются последовательно между рабочими процессами