mitaichik
@mitaichik

Как правильно организовать работу с сокетами?

Всем привет! В java новичек, возможно ламмерский вопрос:

Есть java приложение (демон, java 8), оно должно принимать запросы от других приложений, и отдавать им ответы. Решил организовать это на сокетах.

Макс. кол-во одновременных запросов 1000 (это с запасом, в реальность будет около 300)
Время выполнения запроса ~ 0.2сек
Размер данных запроса ~ 100 байт
Размер ответа ~4Кб

Думал сделать по простому - с помощью ServerSocket + ThreadPool, но когда начал углубляться в тему, увидел что это уже не круто, что нужно юзать NIO, Netty. Для меня это все ново, я с сокетами еще никогда не работал.

Подскажите как правильно сделать?

Плюс, сейчас в приложении чистая Java, но в дальнейшем буду заворачивать его в Spring. Может там уже есть что-то готовое и имеет смысл сразу работать с сокетами с помощью Spring'a?

Заранее спасибо!

UPDATE

Это не веб приложение, это просто демон, который не доступен извне. Его клиенты - это, php( как демоны, так и php-fpm процессы) и несколько других java/c++ приложений, запущенных на той же машине (да, у нас тут зоопарк ;)
  • Вопрос задан
  • 226 просмотров
Решения вопроса 1
mitaichik
@mitaichik Автор вопроса
В общем, потестировал я ServerSocket со своими параметрами (посылал 100 байт текста, выводил его в консоль, отдавал 4Кб). На рабочем компе получилось что такой вариант способен обработать ~ 70 тыс запросов в секунду. С учетом того, что сервер куда более мощьный чем рабочий комп, этот результат более чем удовлетворителен.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
посмотрите на Spring Web Reactive - подойдёт?
Ответ написан
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
Правильно будет как лично Вам удобнее.
От себя могу порекомендовать мину, у нее есть весьма классный Codec Filter для удобства работы чтобы избавиться от рутины с байтами.
Ответ написан
@ruslanys
ServerSocket + ThreadPool - классическая модель обработки соединений. Попробуйте Netty. Его очень просто подружить с тем же Spring. Netty использует Java NIO, но Вам не придется руками разрешать вопросы с каналами и буферами. Java NIO использует неблокируемую (асинхронную) модель обработки соединений и сообщений, что качественно выведет Ваше приложение на другой уровень.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
29 мар. 2024, в 17:14
4000 руб./за проект
29 мар. 2024, в 17:04
5000 руб./за проект
29 мар. 2024, в 17:03
3000 руб./за проект