我致力于构建一个具有大量并发访问的公共API,我认为其中一个方面是使用异步I/O来考虑可伸缩性方面。
最初,我认为使用Nginx作为HTTP (事件驱动的)是因为他以异步方式工作,与Tomcat不同。API将使用Java构建,为此,我认为在使用以下组件时:
我看到了很多关于Servlet3.0的讨论,因为新版本支持异步请求(使用NIO)。基于我的问题和上面的模型,我有一些问题:
发布于 2013-01-29 08:00:48
一旦我计划使用Servlet3.0来支持异步请求,是否有必要使用Netty.io?
不是的。所有这些都应该由容器来处理。
使用事件驱动的webserver (例如: Jetty)是不同的,它使用基于进程的webserver,比如Tomcat 7(支持Servlet 3.0),而不是事件驱动的isn服务器?
我不知道有什么不同。它们都实现了Servlet3.0,因此它们都是事件驱动的。
我在许多站点中看到,Netty.io的工作方式是线程可以接受多个请求,而不是一个线程对等请求的经典方式。在实践中,它是如何工作的?
这是不相关的,见上文(1)。
异步请求处理(Servlet3.0)和非阻塞IO (NIO)是不同的概念?用哪种方式?
是。从各个方面来说。这个问题太大了,不能在这里回答。
我从未见过使用NIO的REST,这是一个好方法吗?我会遇到哪些潜在的问题?
我很少看到需要在客户端使用NIO。
发布于 2013-01-29 21:59:28
我想说,比较Servlet和NIO是不相关的。您可以使用Netty (这非常接近自行车发明)来实现Servlet。考虑到包含在3.0中的异步特性,我认为不可能基于阻塞IO构建有效的实现。我们甚至不需要调查消息来源。像"org.mortbay.jetty.nio.SelectChannelConnector“这样的类名是非常自我描述的。
休息也是一样的。那是另一层。例如,您可以设置tomcat来使用NIO连接器。基本上,这种配置更改在应用层是不可见的。(我不认为有时会发生错误)。
https://stackoverflow.com/questions/14575150
复制相似问题