首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NIO的REST?

使用NIO的REST?
EN

Stack Overflow用户
提问于 2013-01-29 03:22:49
回答 2查看 3.5K关注 0票数 9

我致力于构建一个具有大量并发访问的公共API,我认为其中一个方面是使用异步I/O来考虑可伸缩性方面。

最初,我认为使用Nginx作为HTTP (事件驱动的)是因为他以异步方式工作,与Tomcat不同。API将使用Java构建,为此,我认为在使用以下组件时:

  • Tomcat 7- HTTP/Web + Java容器
  • Netty.io还是HttpCore?
  • Resteasy (休息层,w/ HttpServlet30Dispatcher servlet)
  • MongoDB (w/异步Java驱动程序)

我看到了很多关于Servlet3.0的讨论,因为新版本支持异步请求(使用NIO)。基于我的问题和上面的模型,我有一些问题:

  1. 一旦我计划使用Servlet3.0来支持异步请求,是否有必要使用Netty.io?
  2. 使用事件驱动的webserver (例如: Jetty)是不同的,它使用基于进程的webserver,比如Tomcat 7(支持Servlet 3.0),而不是事件驱动的isn服务器?
  3. 我在许多站点中看到,Netty.io的工作方式是线程可以接受多个请求,而不是一个线程对等请求的经典方式。在实践中,它是如何工作的?
  4. 异步请求处理(Servlet3.0)和非阻塞IO (NIO)是不同的概念?用哪种方式?
  5. 我从未见过使用NIO的REST,这是一个好方法吗?我会遇到哪些潜在的问题?
EN

回答 2

Stack Overflow用户

发布于 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。

票数 3
EN

Stack Overflow用户

发布于 2013-01-29 21:59:28

我想说,比较Servlet和NIO是不相关的。您可以使用Netty (这非常接近自行车发明)来实现Servlet。考虑到包含在3.0中的异步特性,我认为不可能基于阻塞IO构建有效的实现。我们甚至不需要调查消息来源。像"org.mortbay.jetty.nio.SelectChannelConnector“这样的类名是非常自我描述的。

休息也是一样的。那是另一层。例如,您可以设置tomcat来使用NIO连接器。基本上,这种配置更改在应用层是不可见的。(我不认为有时会发生错误)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14575150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档