Сервер JS узла обрабатывает 10000 веб-сокетов - PullRequest
3 голосов
/ 14 апреля 2019

Я разрабатываю программу Node JS для разработки системы реального времени, которая имеет 10 000 сокетов на стороне ввода данных, а некоторые на стороне клиентского приложения (динамически, поскольку клиентские приложения / веб-приложения могут не работать).

Я преобразовываю входные данные в читаемую форму вывода.Например, показания аналогового датчика температуры переведены в шкалу Цельсия.

Я буду размещать это на облачной платформе Google.

Мой вопрос заключается в том, сможет ли сервер Node JS справиться со следующими задачами впараллельно 1) регистрация веб-сокетов 2) исправление / восстановление веб-сокетов 2.1) обновление данных в памяти 2.2) принятие входящих дней 3) преобразование данных 3.1) отправка преобразованных данных 4) сброс данных в базу данных каждые 5 минут

Myвопрос в том, является ли Node JS подходящей технологией или мне нужна многопоточная технология, такая как java

1 Ответ

0 голосов
/ 14 апреля 2019

Мой вопрос, является ли Node JS подходящей технологией

Короче говоря, да, Node будет работать.

Node.js, как и большинство современных сред JavaScript, поддерживает асинхронное программирование . Что значит для программы быть "асинхронной"? Ну, чтобы понять, что значит быть асинхронным, лучше понять, что значит быть "синхронным". Взято из Eloquent Javascript, книги Марин Хавербеке, доступной здесь :

В модели синхронного программирования все происходит по одному. Когда вы вызываете функцию, которая выполняет длительное действие, она возвращается только после завершения действия и может вернуть результат. Это останавливает вашу программу на время действия.

Другими словами, операции происходят по одному. Если бы я использовал синхронную программу для запуска счетчика билетов в округе, сначала был бы обслужен клиент 1, затем клиент 2, затем клиент 3 и т. Д., И т. Д. Каждый человек перед линией добавляет время ожидания ко всем остальным.

Асинхронная модель позволяет нескольким вещам происходить одновременно. Когда вы запускаете действие, ваша программа продолжает работать. Когда действие заканчивается, программа информируется и получает доступ к результату.

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

Надеюсь, это имеет смысл. Теперь, когда эта идея свежая, давайте рассмотрим, как реализовать асинхронную программу. Как упоминалось ранее, Node поддерживает асинхронные программы , однако поддержки фреймворка недостаточно, вам нужно намеренно создавать свою программу асинхронно.

Я могу привести некоторые подробные примеры того, как этого можно достичь в Node, но я не уверен, какие у вас требования / ограничения. Не стесняйтесь добавлять больше деталей в комментарии к этому ответу, и я могу помочь вам больше. Если вам нужно что-то для начала, уделите некоторое время просмотру обещаний и обратного вызова функций

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...