当您使用 Netty 和不在具有数万个连接的应用程序中使用它时,性能有什么真正的区别吗?
6 回答
并非如此,使用 Netty 的一个很好的理由是提高连接的可靠性,让您编写连接的功能,而不是担心可能出错的所有细节。(通常只能通过找出困难的方式来实现)
Netty 可以帮助你扩展超过 1K 的连接。但是,如果您不需要这么多的连接,您可能会发现简单的代码性能最好。
正如彼得所说,并非如此。
但是,我发现 Netty 还提供了一个非常好的 API 来构建服务器。尽管 API 有一些学习曲线,但它制作精良,创建新服务器可能很简单。它在代码方面也非常有效,所以如果你有一个简单的协议和实现,你将只有很少的代码。
仅当您正在为 HTTP 以外的东西构建服务器时。如果您谈论的是 HTTP Web 应用程序,请使用经过验证的 true。Apache 用于直接的 HTML 页面,Tomcat 如果您需要 Servlet。
Netty 非常快,尤其是在有很多连接的情况下。
在我的经验中:
- 它比标准的 Java IO 更具可扩展性。特别是,旧的同步 Java IO 包要求您为每个连接占用一个线程。数以万计的连接可能会成为问题!
- 它与使用Java NIO编写自定义网络代码所获得的速度大致相同,但是直接使用 Netty 而不是沿着这条路线走要简单得多。
Twitter 在其搜索系统中使用了 Netty:
实际使用Tomcat NIO,最多可以得到16000个并发连接;请注意,那是一台机器上的并发连接。这与 Jetty 进行了比较,当他们不断给他们越来越多的内存时,Jetty 达到了 4000 的上限。( http://www.javalobby.org/java/forums/t92965.html )
并且使用像 Grails 这样内置 REST 功能的“convention over config”框架(或像 RestRPC 这样的简单插件),您可以在几秒钟内轻松构建 API、webhook 等。
我还可以使用 Spring Security 插件更好地控制谁可以通过什么 IP 访问什么 api 调用,或者如果我想要什么角色。
Netty 的局限性在于,过多的 Grails 插件可以扩展到远远超出使用 Tomcat NIO 的范围。