Какая библиотека NIO (Netty, Grizzly, kryonet,...) для простой реализации серверного сервера в Java?
Наш интерфейс - простой Jetty (может быть заменен сервером Tomcat). Через сервлеты мы предоставляем публичный HTTP API (более или менее RESTful), чтобы выявить наши функциональные возможности продукта.
В бэкэнд у нас есть процесс Java, который выполняет несколько задач обслуживания. Хотя бэкэнд-процесс обычно выполняет собственные задачи, когда время, время от времени, интерфейс должен пробуждать бэкэнд для выполнения определенной задачи в фоновом режиме.
Какая (N) библиотека IO идеально подходит для этой задачи? Я нашел Netty, Grizzly, kryonet и простой RMI. На данный момент я склонен сказать Netty, кажется простым в использовании и, вероятно, очень надежным.
Есть ли у вас опыт в подобных настройках? Каким будет ваш выбор?
спасибо!
Ответы
Ответ 1
Попробуйте перевести этот документ, который отвечает на ваш вопрос.
http://blog.xebia.fr/2011/11/09/java-nio-et-framework-web-haute-performance/
Это общество, как известные французские эксперты по Java EE, занималось большим количеством серверов NIO в контексте французского вызова, спонсируемого VmWare (USI2011). Речь шла о создании простого приложения Quizz, которое может обрабатывать нагрузку в 1 миллион подключенных пользователей.
Они выиграли этот вызов с отличными результатами.
Их реализация была Netty + Gemfire, и они заменили CachedThreadPool на MemoryAwareThreadPool.
Netty, похоже, предлагает отличные результаты и хорошо документирован.
Они также считали Deft, вдохновленные Tornado (python/facebook), но все еще немного незрелые для них.
Изменить: здесь переведенная ссылка, содержащаяся в комментариях
Ответ 2
Мое предпочтение - Netty. Он простой, но гибкий. Очень быстро, и сообщество вокруг Netty удивительно.
Ответ 3
В настоящее время компания, в которой я работаю, оценивает CoralReactor. Это коммерческое программное обеспечение, но у него самый простой API, который я когда-либо видел для Java NIO. Мое личное мнение заключается в том, что Netty делает вещи слишком сложными, особенно если вы хотите идти без мусора и однопоточными, что является требованием для многих компаний из финансовой, рекламной и игровой индустрии.
Ответ 4
Я бы отделил их, используя JMS, просто у вас есть несколько (контрольных) очередей управления, где ваш сервер работает там, и вы закончили. Не нужно писать пользовательский nio api здесь.
Один пример провайдера - hornetq. Это может быть запущено как обработчик jms in process, он использует Netty под обложками.