Skip to content

Repository files navigation

Application CRUD API on noodejs

Preparing for cross-check

Clone repo

git clone https://github.com/evakerrigan/node-crud-api.git

Change folder

cd node-crud-api

Install dependencies

npm install

Create .env file in root folder (you can choose any number)

PORT=4000

Run in development mode

npm run start:dev

Run in production mode

npm run start:prod

Run in multi-process mode with load balancer

npm run start:multi

Opportunities

Get all users

method: get
address: 127.0.0.1:4000/api/users

Add one user

method: post
address: 127.0.0.1:4000/api/users
body: {
    "username": "Javascriptoslav",
    "age": 28,
    "hobbies": ["travels"]
}

Get user

method: get
address: 127.0.0.1:4000/api/users/${userID}

Update user

method: put
address: 127.0.0.1:4000/api/users/${userID}
body: {
    "username": "test name2",
    "age": 100,
    "hobbies": ["travels"]
}

Delete user

method: delete
address: 127.0.0.1:4000/api/users/${userID}

Horizontal Scaling

При запуске в многопроцессном режиме (npm run start:multi), приложение работает следующим образом:

  1. Создаётся балансировщик нагрузки на порту, указанном в переменной окружения PORT (по умолчанию 4000)
  2. Запускаются рабочие процессы на последовательных портах (PORT+1, PORT+2, и т.д.) в количестве (CPU-1)
  3. Балансировщик распределяет запросы между рабочими процессами, используя алгоритм Round-robin
  4. Данные хранятся в памяти процесса и синхронизируются между всеми рабочими процессами через сообщения от основного процесса

Пример с PORT=4000 и 4 CPU:

  • Балансировщик нагрузки работает на localhost:4000/api
  • Рабочие процессы работают на:
    • localhost:4001/api
    • localhost:4002/api
    • localhost:4003/api
  • Запросы распределяются последовательно между рабочими процессами

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages