Где node.js находится в потоке веб-сервера клиента <->?

Относительно того, как node.js подходит для клиентов и веб-серверов, верно ли мое описание ниже?

  • (А) являются клиентами
  • (B) это node.js, работающий на каком-то веб-сервере
  • (C) - это "сервисы", размещающие бизнес-логику, процедуры доступа к базе данных, например "GetCustomer()". Для простоты предположим, что сервис (C) предоставляет интерфейс REST.

Таким образом, в потоке клиент (A) будет запрашивать некоторый ресурс из node.js (B), который, в свою очередь, отправит этот запрос (со всеми его асинхронными и равномерными параметрами ввода / вывода) в службу (C), которая может пойти и получить некоторую информацию о клиенте и вернуть ее в node.js (B) с помощью обратного вызова, а затем в свою очередь, node.js возвращает этот ответ клиенту.

1. Это правильно?

Два связанных вопроса:

2. Как node.js знает, в какую службу отправлять запрос? Нужно ли вам создавать API-заглушки в node.js, которые отражают API-интерфейсы служб, поскольку клиент не обращается напрямую к службам?

3. Как обрабатывается состояние сеанса в этой архитектуре?

2 ответа

Решение

Прежде всего это "диаграмма" обычного потока:

     Client                                
       |                                    
       v                                    
     Request                               
       |                                  
       v                                                          
(load balancer e.g. nginx)                
       |                                  
       v                                    
 Node.js Instance                          
 |     |      |                             
 v     v      V                            
DB    APIS   FILES                         

По поводу ваших последних двух вопросов:

  1. Как ты хочешь, чтобы он это знал? Node.js - это универсальный фреймворк, для которого вам нужно написать код.

  2. Опять же, Node.js полностью универсален. Если у вас есть только один экземпляр, вы можете сделать это в памяти. В противном случае вы, вероятно, будете использовать Redis или тому подобное.

Вы можете написать игровые серверы в Node.js, вы можете просто подсчитать числа или написать веб-сервер.

Но вам не нужно делать это так, как вам нравится, или искать структуру, которая делает это так, как вам нравится.

Node.js - это фреймворк для написания приложений на javascript, которые не работают в веб-браузере. Из-за своей асинхронной природы он действительно хорош в написании веб-сервисов. Поскольку (B) Node.js является веб-сервером, он не работает внутри веб-сервера (apache). Для (C) вся ваша логика может быть просто в вашем приложении Node.js или в вашем приложении Node.js может общаться с какой-либо другой службой для получения данных. Это полностью зависит от вас.

За 2 вы можете делать это как хотите. Вы пишете код, делайте так, как имеет смысл в вашем приложении.

Для 3 состояние обрабатывается объектом сеанса / соединения, который передается обратным вызовам.

Другие вопросы по тегам