Стоит ли писать высоконагруженный сервер на Java?

Задача: написать чат (работать будет НЕ по HTTP).
Для начала ориентир на 500-1000 человек онлайн одновременно (потом может сильно возрасти).
Сам с сетевыми приложениями практически не сталкивался. С серверами вообще по нулям.
Выбор невелик: Java или C++. Про всякие питоны я молчу(хотя хотелось бы на питоне3 писать:D).
Если писать на плюсах, то будет очень много геморра:(

В общем, сабж. Если есть альтернативы - буду только рад.
  • Вопрос задан
  • 5838 просмотров
Пригласить эксперта
Ответы на вопрос 6
1000 одновременных соединений это и для питона не проблема. Лучше понять сколько сообщений и какого объема будет проходить в единицу времени.
Я бы на вашем месте выбрал Java, хотя бы исходя из того, что протокол можно реализовать в виде библиотеки и использовать на Android, а не реализовывать заново.
Во-вторых, я бы выбрал Java из-за развитой экосистемы этой платформы и огромного количества открытых библиотек и инструментов.
Ответ написан
IlyaEvseev
@IlyaEvseev
Opensource geek
Java годится. По сравнению с Си++, сэкономите много времени.
Старайтесь использовать асинхронность вместо многопоточности.
Ответ написан
Комментировать
@kaasius
Протокол какой? Для RTMP можно найти например готовые решения.
Ответ написан
madmages
@madmages
Человек прямоходящий
Ответ написан
Комментировать
Есть Akka Netty (Typesafe Stack) Jooq ...
В случае с С++ основной сложностью является отслеживание утечек памяти и правильна организация процесса разработки. В целом у вас больше времени уйдёт на профилирование и фаззинг.
В Java основной проблемой является задержка при сборке мусора - лечится offheap кэшированием и Stack Allocator'орами.

В целом Java на 20-30% медленнее из-за дополнительной прослойки для типобезопасности.

Node.js конечно хорошо, но code maturity, поддержка и обратная совместимость решений обычно ужасны.

Не ясно о каких нагрузках вообще идет речь.
Для 500-1000 человек можете и на питоне написать...
Как вы будете проводить нагрузочное тестирование ?

В принципе не важно на чём писать ...
Главное это использование epoll() / kqueue() механизмов.

По личному опыту могу сказать что обработать 10Гбит трафика на Java это не большая проблема.
В случае с erlang и node.js - просто тихий ужас. Но опять же зависит от задач.
Ответ написан
foxmuldercp
@foxmuldercp
Системный администратор, программист, фотограф
Вопрос - что в этом "чате" такого хитрого, что нельзя взять уже готовый jabber демон и к нему стопицот жабер клиентов под все известные платформы и экзотику, вроде жаба аплета под обычные мобилки.
опять же - нормально интегрируется с ms ad, ldap
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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