2012-05-24 2 views
0

Мое приложение использует node.js, потому что node.js и Mongo - идеальное совпадение, сделанное на небесах. Но мне интересно об этом:Нужны ли несколько работников при асинхронном режиме?

Приложение для моего сервера работает в одном процессе. Node.js является асинхронным, но однопоточным, означает ли это, что узел не будет отправлять сразу два запроса на сервер mongo?

На сервере Mongod работает с 5 рабочими процессами. Это необходимо? Могу ли я просто свести его к одному, и он работает так же хорошо? (И если да, то как?)

Или, может быть, есть способ сделать приложение моего узла запущенным на нескольких процессах, эффективно.

ответ

1

Это означает, что узел не отправит сразу два запроса на сервер mongo ?

  1. Действительно, узел будет посылать запросы синхронно Монго. Однако запросы на отправку выполняются в такт (обычно с низким миллисекундом).

  2. Число-crunshing вещи происходит на стороне mongo, которая должна сделать твердый материал, чтобы сделать ответ. Это то, над чем работает рабочий процесс mongo, и выполняется параллельно (5 работников равны 5 нитям). ПРИМЕЧАНИЕ: Узел не будет блокироваться, пока монго вычисляет этот ответ.

  3. В конце монго отправляет ответ (-ы), который вы захватываете в узле с помощью (асинхронного) обратного вызова.

p.s: так что imo не нужно кластеризовать еще. Это неплохо асинхронно. (Кроме того, попав Монго с большим количеством запросов, более чем вероятно, IO связаны, так что «кластеризация» так другие процессоры могут совместно нагрузка не будет существенно помочь в этом случае.

НТН

0

это должно в основном ответить на ваш вопрос:

http://nodejs.org/api/cluster.html

, если он не делает, а это позволяет создавать дочерние процессы для вашего приложения узла, которые выполняются определенные части кода.

Смежные вопросы