Где находится node.js в потоке клиента <--> веб-сервера?
-
24-10-2019 - |
Вопрос
Что касается того, как node.js сочетается с клиентами и веб-серверами, правильно ли мое описание ниже?
- (А) являются клиентами
- (B) node.js работает на каком-то веб-сервере
- (C) — это «сервисы», содержащие бизнес-логику, процедуры доступа к базе данных, например.«ПолучитьКлиент()».Для простоты предположим, что служба (C) предоставляет интерфейс REST.
Таким образом, в потоке клиент (A) запросит некоторый ресурс у node.js (B), который, в свою очередь, отправит этот запрос (со всеми его асинхронными и событийными возможностями ввода-вывода) в службу (C), которая может пойти и получить некоторую информацию о клиенте и вернуть ее в node.js (B) через обратный вызов, а затем, в свою очередь, node.js возвращает этот ответ клиенту.
1. Это правильно?
Два связанных вопроса:
2.Как node.js узнает, в какой сервис отправлять запрос?Нужно ли вам создавать «заглушки» API в node.js, которые отражают API-интерфейсы служб, поскольку клиент не обращается напрямую к службам?
3.Как в этой архитектуре обрабатывается состояние сеанса?
Решение
Прежде всего «схема» обычного потока:
Client
|
v
Request
|
v
(load balancer e.g. nginx)
|
v
Node.js Instance
| | |
v v V
DB APIS FILES
По поводу ваших последних двух вопросов:
Откуда вы хотите, чтобы он это знал?Node.js — это универсальный фреймворк, для которого вам придется написать код.
Опять же, Node.js является полностью универсальным.Если у вас есть только один экземпляр, вы мог делай это в памяти.В противном случае вы, скорее всего, использовали бы Redis или что-то подобное.
Вы можете писать игровые серверы на Node.js, можете просто подсчитывать цифры или писать веб-сервер.
Но вам не обязательно делать это так, как вам нравится, или искать фреймворк, который делает это так, как вам нравится.
Другие советы
Node.js — это платформа для написания приложений на JavaScript, которые не запускаются в веб-браузере.Благодаря своей асинхронной природе он действительно хорош при написании веб-сервисов.Поскольку (B) Node.js — это веб-сервер, он не работает внутри веб-сервера (apache).Для (C) вся ваша логика может быть просто в вашем приложении Node.js или ваше приложение Node.js может взаимодействовать с каким-либо другим сервисом для получения данных.Это полностью зависит от вас.
Для двоих вы можете делать это как хотите.Вы пишете код, делайте это так, как это имеет смысл в вашем приложении.
В версии 3 состояние обрабатывается объектом сеанса/соединения, передаваемым в обратные вызовы.