powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / На чем делать сокет-сервер?
25 сообщений из 35, страница 1 из 2
На чем делать сокет-сервер?
    #38679556
host.13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Существует сеть датчиков, расположенных на удаленных объектах, которые через TCP-, UDP- и COM-порты передают определенную информацию к нам в систему. На нашей стороне необходимо разработать сервер, который смог бы держать десятки тысяч подключений по TCP, принимать трафик по UDP-портам с десятков тысяч хостов, принимать трафик с COM-портов, и складывать все в БД. Предполагается писать сервер либо на Java, либо на PHP, либо на Python. Подскажите, какие фреймворки существуют для организации таких серверов на этих языках? Если кто разрабатывал похожие проекты, какую архитектуру использовали?
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38679952
mvn3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38680252
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На С++ такие вещи пишут.
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38680258
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично я - однозначно за PHP.

П.С. Необходимый вам фреймворк называется "квалифицированный программист". Но это не тот совет, который кто-нибудь когда-нибудь выполняет. "Мы тут решили организовать госпиталь на десять тысяч коек, подскажите, какой стороной скальпель держать" (ц)
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38680356
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
host.13Если кто разрабатывал похожие проекты, какую архитектуру использовали?
Я делал. На C#. Протокол SSL, около 300 тысяч сообщений в секунду сервер мог обрабатывать... Количество клиентов ограничивалось только ресурсами сервера. Технология очень простая - таски из TPL.
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38680764
host.13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл уточнить: решение должно работать как на Windows, так и на Linux.

Softwarer, разве программист, который имеет достаточный кругозор, чтобы сказать, при помощи каких технологий решать ту или иную задачу, называется программистом? Не архитектор ли это?
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38680770
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79host.13Если кто разрабатывал похожие проекты, какую архитектуру использовали?
Я делал. На C#. Протокол SSL, около 300 тысяч сообщений в секунду сервер мог обрабатывать... Количество клиентов ограничивалось только ресурсами сервера. Технология очень простая - таски из TPL.Тут принцип простой. Можно на каждое соединение создавать поток. Тогда их будут десятки тысяч. Ресурсов пожрёт много. Нужен многопроцессорный сервер. Подходит при длительных операциях. А если операции короткие, то можно обрабатывать их в одном потоке по очереди. Надо ещё смотреть протокол обмена. Если следующие операции не зависят от предыдущих (датчик просто выдал данные и ничего не ожидает в ответ), то можно буферные очереди организовать. Одни потоки принимают данные и складывают в очереди, другие потоки обрабатывают данные из очередей.
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38680826
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. LiseevМожно на каждое соединение создавать поток
Но не нужно :-) Даже безотносительно длительности операций. Накладные затраты на переключение контекста при десятках тысяч потоков будут очень большими

Dmitry V. LiseevА если операции короткие, то можно обрабатывать их в одном потоке по очереди
+1

Dmitry V. LiseevЕсли следующие операции не зависят от предыдущих (датчик просто выдал данные и ничего не ожидает в ответ), то можно буферные очереди организовать. Одни потоки принимают данные и складывают в очереди, другие потоки обрабатывают данные из очередей.
Условие не обязательно. Можно в любом варианте сделать: "Одни потоки принимают данные и складывают в очереди, другие потоки обрабатывают данные из очередей"

Самое главное для ТС обеспечить нужную скорость при работе с БД. Что толку от сервера приложений, если БД не успеет сохранять инфу с десятков тысяч поставщиков информации...
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38680828
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Я бы советовал не делать на винде...ибо общеизвестно,что наработка на отказ в этой ОС на порядок ниже
чем у других. Ещё с червями и вируснёй бороться..что называется "Контора напрасный труд".

Ну и как следствие это остаётся та же java или php
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38680838
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alЯ бы советовал не делать на винде...ибо общеизвестно,что наработка на отказ в этой ОС на порядок ниже
чем у других. Ещё с червями и вируснёй бороться..что называется "Контора напрасный труд".

:-) Хе-хе. Ну для говноконтор разумеется, там может и крякнутая винда стоять. Пичалька.

PS Никто не мешает сделать код под Mono, и запускать где угодно. Я делал. Работает. Даже на отвратной винде...
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38680856
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79irbis_alЯ бы советовал не делать на винде...ибо общеизвестно,что наработка на отказ в этой ОС на порядок ниже
чем у других. Ещё с червями и вируснёй бороться..что называется "Контора напрасный труд".

:-) Хе-хе. Ну для говноконтор разумеется, там может и крякнутая винда стоять. Пичалька.

PS Никто не мешает сделать код под Mono, и запускать где угодно. Я делал. Работает. Даже на отвратной винде...

MONO это дополнительно звено,дополнительная прослойка,
которая так же понижает наработку на отказ.
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38680859
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,

Java, PHP и прочие языки - тоже прослойка, которая понижает работу на отказ. Так что эталон надежности - программа на assembler
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38680863
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
host.13Softwarer, разве программист, который имеет достаточный кругозор, чтобы сказать, при помощи каких технологий решать ту или иную задачу, называется программистом? Не архитектор ли это?
Программист - широкое понятие. Один и тот же человек может быть гуру в одной конторе и не дотягивать до миддла в другой. Вам нужен человек, который умеет это делать или, по крайней мере, может разобраться и выдать разумные суждения. А как будет называться его должность - дело двадцатое. Мне, например, регулярно приходят вакансии, в которых основной работой архитектора считается написание идиотских бумажек.
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38682293
mvn3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry V. Liseev,

>>Тут принцип простой. Можно на каждое соединение создавать поток. Тогда их будут десятки тысяч. Ресурсов пожрёт много

А объектный пул не?
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38682415
drDaemon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я использовал в нескольких проектах для игрового сокет сервера Python. Twisted. Реализуется быстро. Легко можно апгрейдить до бесконечно большого количества одновременных коннектов. Ну а если у него не хватит силенок - то С(++). Многое зависит от конкретной задачи.
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38682441
prog123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38682936
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЛично я - однозначно за PHP.
интересная мысль, с учётом того, что датчики не используют HTTP
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38682945
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
а COM порты используют?
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38682947
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Изопропил,
а COM порты используют?

в стартовом посте достаточно наличия UDP
COM порты упоминать не стал - маловероятно что они напрямую к серверу будут подключаться
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38682951
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилмаловероятното-то и оно, что у аффтара мешанина в голове по ТЗ.
А к ТЗ подходят всегда буквально и дотошно.
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38682960
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Dmitry V. LiseevМожно на каждое соединение создавать потокНо не нужно :-) Даже безотносительно длительности операций. Накладные затраты на переключение контекста при десятках тысяч потоков будут очень большимиЗависит от длительности операций. Сравните архитектуру apache и nginx. Накладные затраты - не проблема. Задача легко масштабируется. Поставим сотню серверов.

Arm79Dmitry V. LiseevЕсли следующие операции не зависят от предыдущих (датчик просто выдал данные и ничего не ожидает в ответ), то можно буферные очереди организовать. Одни потоки принимают данные и складывают в очереди, другие потоки обрабатывают данные из очередей.Условие не обязательно. Можно в любом варианте сделать: "Одни потоки принимают данные и складывают в очереди, другие потоки обрабатывают данные из очередей"Обязательное. Если я лезу на сайт, жму кнопку, и жду ответа перед тем, как нажать следующую, то очереди не нужны. А вот если я жму кнопку и мне не важен ответ, то можно поставить запрос в очередь и через пару-тройку часов переслать мне результат мылом.

Если запросы можно переупорядочивать, то очереди делаются в зависимости от предполагаемой длительности операции, приоритета, и т.д.
Arm79Самое главное для ТС обеспечить нужную скорость при работе с БД. Что толку от сервера приложений, если БД не успеет сохранять инфу с десятков тысяч поставщиков информации...Тут дело в колебаниях скорости. Допустим, БД успевает обрабатывать 100 тыс. операций в минуту. Поток от датчиков 70 тыс. Всё хорошо. Потом кратковременно поток подскакивает до 300 тыс. и всё уже плохо. Для этого нужны очереди и буфера. Ещё учебник по теории массового обслуживания.
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38682961
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mvn3Dmitry V. Liseev,

>>Тут принцип простой. Можно на каждое соединение создавать поток. Тогда их будут десятки тысяч. Ресурсов пожрёт много

А объектный пул не?Зависит от архитектуры системы и протоколов обмена данными.
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38682965
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. LiseevЗадача легко масштабируется. Поставим сотню серверов.
А вы из своего кармана будете оплачивать покупку серверов?

Dmitry V. LiseevЕсли я лезу на сайт, жму кнопку, и жду ответа перед тем, как нажать следующую, то очереди не нужны
очереди НЕ ОБЯЗАТЕЛЬНЫ. Но возможны.

Dmitry V. LiseevДопустим, БД успевает обрабатывать 100 тыс. операций в минуту. Поток от датчиков 70 тыс. Всё хорошо. Потом кратковременно поток подскакивает до 300 тыс. и всё уже плохо.
А если БД успевает обработать 100 штук операций в минуту, а извне приходит 110?
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38682983
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам определенно нужно смотреть в сторону Event-Driven парадигмы. Подход "одно соединение -- один поток" быстро откушает всю память, а процессор будет в основном заниматься переключением контекстов.

Я не знаю, как там в PHP, но для Питона есть Twisted, для Java есть Netty и Mina. Есть еще хипстерскый Node.js
...
Рейтинг: 0 / 0
На чем делать сокет-сервер?
    #38682990
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Dmitry V. LiseevЗадача легко масштабируется. Поставим сотню серверов.А вы из своего кармана будете оплачивать покупку серверов?Сервера стоят намного дешевле, чем оплата труда программиста.

Arm79Dmitry V. LiseevЕсли я лезу на сайт, жму кнопку, и жду ответа перед тем, как нажать следующую, то очереди не нужныочереди НЕ ОБЯЗАТЕЛЬНЫ. Но возможны.Я указал ситуацию, где очереди НЕ ВОЗМОЖНЫ.

Arm79Dmitry V. LiseevДопустим, БД успевает обрабатывать 100 тыс. операций в минуту. Поток от датчиков 70 тыс. Всё хорошо. Потом кратковременно поток подскакивает до 300 тыс. и всё уже плохо.А если БД успевает обработать 100 штук операций в минуту, а извне приходит 110?Ставим вторую БД и вместе они успевают обрабатывать уже 200.
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / На чем делать сокет-сервер?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]