Производительность Netty

Есть ли какая-то реальная разница в производительности при использовании Netty и если вы не используете ее в приложении с десятками тысяч подключений?

Ответы

Ответ 1

На самом деле, хорошая причина для использования Netty заключается в повышении надежности соединений и предоставлении вам кода, что делает связь, а не беспокоиться о деталях всего, что может пойти не так. (Часто приходит только путем поиска трудного пути)

Netty может помочь вам масштабировать более 1 тыс. соединений. Однако, если вам не нужно столько подключений, вы можете обнаружить, что простой код работает лучше всего.

Ответ 2

Не совсем, как заметил Питер.

Однако я обнаружил, что Netty также предлагает очень хороший API для создания сервера. Хотя в API существует немного кривая обучения, она хорошо сделана, и создание нового сервера может быть тривиальным. Это также довольно эффективный код, поэтому у вас будет очень мало кода, если у вас есть простой протокол и реализация.

Это ТОЛЬКО, если вы создаете сервер для чего-то другого, кроме HTTP. Если вы говорите о веб-приложении HTTP, перейдите к проверке истины. Apache для прямых HTML-страниц, Tomcat, если вам нужны сервлеты.

Ответ 3

HTTP-приложение не обязательно переходит к apache httpd и tomcat:

  • Отметьте этот и этот, чтобы увидеть, как превосходный nginx сравнивается с apache httpd
  • Нажмите здесь, чтобы увидеть, как среда Play! (на основе Netty) превосходит те, которые основаны на Tomcat/Servlet.

Ответ 4

Netty работает очень быстро, особенно со многими подключениями.

По моему опыту:

  • Он более масштабируемый, чем стандартный Java IO. В частности, старые синхронные пакеты Java IO требуют, чтобы вы связывали один поток на соединение. Это может стать проблемой с десятками тысяч подключений!
  • Это примерно такая же скорость, что и вы, если бы вы написали пользовательский сетевой код, используя Java NIO, но гораздо проще просто использовать Netty, а не идти по этому маршруту.

Ответ 6

Фактически, используя Tomcat NIO, вы можете получить до 16 000 одновременных соединений; У вас есть CONCURRENT соединения на одной машине. Это было проверено как сравнение против Jetty, которое превысило 4000, когда они продолжали давать им все больше и больше памяти. (http://www.javalobby.org/java/forums/t92965.html)

И используя инфраструктуру 'con over config', такую ​​как Grails с встроенной функцией REST (или с помощью таких плагинов, как RestRPC), вы можете легко создавать API, webhooks и т.д. в секундах.

У меня также есть больший контроль с помощью Spring плагина безопасности, который может получить доступ к вызову api через какой IP или какую роль я хочу.

Netty имеет ограничения, что множество плагинов Grails может расширяться далеко за пределы использования Tomcat NIO.