170 похожих чатов

Доброго! Нужна консультация. Задача у меня такая, на Nodejs написать серверную

часть, которая позволит решить круг следующих задач:
1) прием и обработка ModBusTCP запросов, от 100 до 500 клиентов, каждый клиент должен быть прикреплен к отдельному порту
2) обработку запросов клиента нужно завести в отдельный поток
3) логику обработки запросов клиента нужно занести в отдельный js файл, с возможностью горячего подключения к основному проекту, т.е. без перезагрузки/остановки серверной части

Что можете посоветовать, какие технологии мне подойдут?
По идее мне нужны:
- планировщик задач,
- средства выделения потоков, с возможностью импорта скриптов из js файлов
- инструмент для динамического подключения к проекту новых js файлов
- сервер ModBusTCP

Помогите с выбором модулей

30 ответов

26 просмотров

А точно на ноде надо это делать?

N-Oleg Автор вопроса
Алексей Попов
А точно на ноде надо это делать?

В принципе нет. Просто начальство подсело на vue и node и хотела что бы серверная часть была написана на node Если noda не подходит для реализации задач, то можно воспользоваться любым другим вариантом

Динамически подключать скрипты не выйдет, насколько я тебя понял. Только если мутить обертку через eval, что в целом плохая идея. Отдельные потоки на каждый запрос сделать можно, всё для этого есть. Про планировщик задач — тебе очереди нужны, или шедулер? Непонятен масштаб

N-Oleg Автор вопроса
Артем
Динамически подключать скрипты не выйдет, наскольк...

скорее всего шедулер, для параллельного приема данных от 100 до 500 контроллеров

N Oleg
В принципе нет. Просто начальство подсело на vue и...

Странно когда в одном тз звучит нода и обработка запросов в отдельном потоке. Стоит подумать точно ли подходящий инструмент выбран, и используется ли этот инструмент по назначению Зачем нужны отдельные потоки?

N-Oleg Автор вопроса
Алексей Попов
Странно когда в одном тз звучит нода и обработка з...

есть соти контроллеров, от которых по ModBusTCP приходят данные, их нужно принять и обработать, записать в БД и вывести пользователю статистику

N Oleg
скорее всего шедулер, для параллельного приема дан...

Ну это не масштаб, надо справится. Но лучше подумай над выносом конкретной обработки запроса, а не всего, ведь сила ноды в асинхронности. Т.е. на каждый запрос нужно сделать свой контекст и по завершению выполнять событие. Это можно очень по разному сделать. Т.е. если каждый запрос будет обрабатываться в отдельном потоке, то сложнее будет разруливать ответы (Нужно будет вызывать асинхронно запуск потока и ждать резолва) Но меня понесло уже

N Oleg
есть соти контроллеров, от которых по ModBusTCP пр...

Это не ответ на мой вопрос. Зачем нужны отдельные потоки?

N-Oleg Автор вопроса
Артем
Ну это не масштаб, надо справится. Но лучше подум...

ответа не будет, тут односторонний прием данных, которые после обработки должны попасть в БД. я хотел в поток занести логику: прием данных, их обработку, запись в БД, и последующего ожидания запроса от контроллера. Как бы задачу зациклить

N-Oleg Автор вопроса
Алексей Попов
Это не ответ на мой вопрос. Зачем нужны отдельные ...

я хотел в поток занести логику: прием данных, их обработку, запись в БД, и последующего ожидания запроса от контроллера. Как бы задачу зациклить

N-Oleg Автор вопроса
Алексей Попов
Зачем?

ваши предложения

N Oleg
ответа не будет, тут односторонний прием данных, к...

В теории это может ускорить выполнение, но всё зависит от сложности обработки. Возможно конкуренция тут не нужна

N Oleg
ваши предложения

У меня нет предложений, я хочу понять какая цель преследуется выведением чего-то в отдельный поток (или в несколько потоков). Нода предлагает однопоточную асинхронную работу с запросами, почему вы считаете что вам это не подойдёт? Сложные долгие вычисления при обработке запросов? Или какие-то ещё причины?

N-Oleg Автор вопроса
Алексей Попов
У меня нет предложений, я хочу понять какая цель п...

Читал, что объемные запросы со сложной обработкой могут застопорить работу если не использовать потоки, по этому пришел к выводам использования потоков. В ээтих выводах могу ошибаться т.к. опыта в nodejs у меня мало. Против одно поточности я ничего не имею, и даже за, ибо проще. Тут надо пробовать

N Oleg
Читал, что объемные запросы со сложной обработкой ...

Так а обработка данных от контроллеров сложная? Там сложные вычисления, сотни мегабайт данных?

N-Oleg Автор вопроса
Алексей Попов
Так а обработка данных от контроллеров сложная? Та...

Есть сложные задачи связанные с распаковкой, конвертацией данных, с пересылкой и резервированием, и много чего другого, фантази у начальников велика и извращенна Хотя я все же начинаю склоняться к одно поточности. Хотя остается вопрос, спиваться ли нода со 100 одновременно подключенными и передаваемыми данных контроллерами?

N Oleg
Есть сложные задачи связанные с распаковкой, конве...

Данные передаются постоянно? Какой вообще трафик ожидается?

N Oleg
Есть сложные задачи связанные с распаковкой, конве...

если много io, то справится если много cpu, то нужно считать

N-Oleg Автор вопроса
Алексей Попов
Данные передаются постоянно? Какой вообще трафик о...

данные передаются эпизодически, по событию и по времени (один запрос на запись регистров в 10 сек), это с одного контроллера, а их в районе 600 и их количество постоянно растет

N-Oleg Автор вопроса
Alexey Ermakov
если много io, то справится если много cpu, то нуж...

что такое io и cpu? я не очень понял ваш ответ

N Oleg
что такое io и cpu? я не очень понял ваш ответ

если много работы процессором (сложные трансформации данных, расчёты) - это cpu. io это туда сюда данные гонять: подождать из сокета, например и записать в базу

N Oleg
данные передаются эпизодически, по событию и по вр...

Звучит как слишком маленькая нагрузка для того, чтобы беспокоиться о многопоточности

Никита Потехин
Тупо программисты этого чата

Тут разные люди. Некоторые вон русский еле-еле понимают. Так что не надо обобщать

N-Oleg Автор вопроса
Алексей Попов
Звучит как слишком маленькая нагрузка для того, чт...

Наверное вы правы, я не знаю пределы node, но на C++ данные задачи были почему то разделены на потоки (разбирал исходники рабочей SCADA)

N-Oleg Автор вопроса
Alexey Ermakov
если много работы процессором (сложные трансформац...

скорее всего io, моя задача - это получить с сокета данные, распаковать, преобразовать и обработать, записать в БД

N Oleg
Наверное вы правы, я не знаю пределы node, но на C...

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

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта