Нужен сервер для обслуживания большого количества входящих соединений.

Модератор: Модераторы разделов

lanmaster
Сообщения: 2

Нужен сервер для обслуживания большого количества входящих соединений.

Сообщение lanmaster »

Нужен сервер для обслуживания большого количества входящих соединений. От 500 до 2000 одновременно.
Размер передаваемых данных по этим соединениям будет очень небольшим (сервер будет обслуживать J2ME - клиентские программы).
Соединения будут поддерживаться (видимо, это сокеты).
Планируем написать под Debian на Java.
Но что-то до конца не понятно, а может лучше на C++?

Посоветуйте что-нибудь, пожалуйста...
Спасибо сказали:
Аватара пользователя
AestheteAnimus
Сообщения: 135
ОС: FreeBSD 8.0-RELEASE amd64

Re: Нужен сервер для обслуживания большого количества входящих соединений.

Сообщение AestheteAnimus »

Используйте мультиплексирование (kqueue, poll, select) + неблокируемые операции. Что бы сказать более точно, надо знать, какие данные, куда и откуда будут передаваться и какую еще работу выполняет этот сервер.
Спасибо сказали:
lanmaster
Сообщения: 2

Re: Нужен сервер для обслуживания большого количества входящих соединений.

Сообщение lanmaster »

AestheteAnimus писал(а):
08.04.2009 16:23
Используйте мультиплексирование (kqueue, poll, select) + неблокируемые операции. Что бы сказать более точно, надо знать, какие данные, куда и откуда будут передаваться и какую еще работу выполняет этот сервер.

Мобильные клиенты J2ME будут получать и отдавать данные серверу в небольших объемах. До 2Кб за передачу. Данные - текстовые и числовые массивы.
Спасибо сказали:
Аватара пользователя
AestheteAnimus
Сообщения: 135
ОС: FreeBSD 8.0-RELEASE amd64

Re: Нужен сервер для обслуживания большого количества входящих соединений.

Сообщение AestheteAnimus »

lanmaster писал(а):
10.04.2009 07:39
Мобильные клиенты J2ME будут получать и отдавать данные серверу в небольших объемах. До 2Кб за передачу. Данные - текстовые и числовые массивы.

Я бы не стал писать на Жаве сервер (хотя бы потому что я не знаю ее, и не для этого она вообще ;) ). Ну если Вам так хочется, чтобы было именно на ней, то стоит посмотреть, как работает асинхронный ввод/вывод - это еще один способ для поддержания большого количества соединений. Но если все-таки на Си, то ничего нового сказать не могу, асинхронные операции в никсах освещены довольно слабо (сам с удовольствием бы про это почитал), так что остается именно мультеплексирование.
Спасибо сказали:
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Нужен сервер для обслуживания большого количества входящих соединений.

Сообщение frp »

Нормально можно сделать сервер на C или C++. Только он будет работать либо исключительно на unix-подобных, либо исключительно на Windows. Если нужна переносимость, то можно использовать специальные библиотеки. Еще можно заключить системно-зависимые операции в блоки #ifdef - #endif.
Придется использовать мультиплексирование (желательно poll) в Unix-подобных и асинхронные сокеты в Windows (здесь и возникают самые серьезные проблемы переносимости).
На java вряд ли стоит писать сервер изза тормозов системы сбора мусора и тормозов самой java-машины.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Нужен сервер для обслуживания большого количества входящих соединений.

Сообщение Portnov »

Тогда уж, в linux не poll, а epoll, если всё равно под каждую систему свой код.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
Doka
Сообщения: 715
Статус: ASIC Design Engineer
ОС: RHEL4

Re: Нужен сервер для обслуживания большого количества входящих соединений.

Сообщение Doka »

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

а на Питоне решать схожую задачу (сервер для большого числа непроизводительных соединений) не будет ли большим извращением?!
Never stop thinking..................................................................
Спасибо сказали: