Производительность 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, а не идти по этому маршруту.
Ответ 5
Twitter использовал Netty в своей поисковой системе:
Ссылка: Twitter Search теперь 3x быстрее
Ответ 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.