2015-04-07 5 views
0

В настоящее время я рассматриваю приложение NodeJS, где я хочу использовать socket.io для связи между несколькими клиентами.Архитектура для задач с интенсивным процессором с NodeJS & Socket.io

Приложение будет состоять из сотен клиентов, все из которых имеют местоположение на карте карт google. Я хочу, чтобы сервер обрабатывал для каждого клиента, клиенты которого находятся в радиусе 200 метров друг от друга. Если бы я сделал все это в javascript внутри nodeJS, это поставило бы огромную нагрузку на сервер, и я боюсь, что это заставит сервер приостановить все другие задачи при обработке этой огромной задачи, что приведет к тому, что все коммуникации будут остановлен, когда сервер выполняет интенсивные задачи cpu.

Вопрос в том, как можно использовать NodeJS с Socket.io исключительно для связи между клиентами и переместить более интенсивные задачи с ЦП в другое место, чтобы связь между клиентами не была остановлена, когда сервер выполняет интенсивные задачи с процессором?

Спасибо заранее и извините мой английский!

Брэм

+0

Я чувствую, что этот вопрос может быть немного широк для полезного ответа. Возможно, если вы соберете тест в узле, вы сможете оценить и оценить свои проблемы в многозадачности и задать более конкретные вопросы о вашем подходе? – seanhodges

+0

Возможно, стоит обратить внимание на оптимизированные структуры данных, которые сделают запрос, который вы хотите выполнять с меньшим потреблением ЦП (для геопространственных поисков, [R-Tree] (http://en.wikipedia.org/wiki/ R-дерево) довольно распространены и довольно быстро). – robertklep

ответ

1

Рассмотрите возможность использования/модель паб суб уборщица очереди, в которой сервер socket.io просто взаимодействует с клиентами и сохраняется их данные в базу данных (Redis или любой другой) и отдельный кластер рабочих процессов тянуть работу вычислений выключить очередь, вычислить результаты и записать их обратно, где клиентские серверы могут передавать их клиентам.

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