快速NIO,Java异步HTTP服务器

Daf*_*aff 7 java asynchronous http

关于这个问题,我实际上正处于为我的一个项目找到合适的HTTP容器的阶段.我查看了几个容器,但我仍然不确定哪一个最适合高负载AJAX请求.Apache Mina看起来非常有前途,但也相对复杂.名为AsyncWeb的异步Web服务器实现似乎已经与Mina合并,但我找不到它的任何生产方法.在另一个问题中,我推荐了我非常喜欢的简单HTTP服务器,因为它简单,清晰,干净,但我仍然不知道它是否符合目的.

另外,我不确定选择哪个请求处理概念:

  1. 为每个传入连接创建一个调度程序线程(优化当然可能包括一个线程池和一个调度队列),即完成所有工作.优点可能是,我不必处理那么多同步问题,但它可能会大大降低高负载的吞吐量.

  2. 因为它将是一个高度模块化的应用程序"流水线"(我猜可能有一个更合适的术语;)方法也可以工作:创建固定数量的线程,每个线程用于某个任务.例如,一个用于请求处理 - >一个用于头部反序列化(如果我以不同的格式输入,如提交的HTML表单,XML-RPC,JSON等) - >一个用于"控制器调度"(做我想对这些数据做的任何事情) ) - >和一个用于以所需格式(JSON,XML,HTML等)序列化输出,并将每个请求移动到这些级别,直到它完成.可能更难以实现,但我有固定数量的线程(数量也可以依赖于硬件)和关注点的清晰分离.

任何可能适合的框架的经验和两种不同的处理方法?

Bri*_*new 7

你可能想看看Jetty,特别是Hightide

Hightide预先配置了最先进的Ajax通信库,如DWR,ActiveMQ-Web(浏览器的JMS)和Bayeux协议(也称为cometd).在Hightide上部署应用程序意味着它可以通过Jetty的智能IO层和延续机制的组合顺利扩展

具体来说,已经投入了大量的工作来优化Jetty for AJAX.有关详细信息,请参阅此博客条目


ng.*_*ng. 3

Simple HTTP subversion 存储库上有一个示例。

http://simpleweb.svn.sourceforge.net/viewvc/simpleweb/trunk/src/demo/java/org/simpleframework/example/javafx/

它使用 comet 演示实时市场数据,并且只有一个线程向任意数量的客户端分派更新。Simple 具有透明的传输层,可提供阻塞 I/O 语义,并具有基于每个连接客户端的固定 ByteBuffer 队列的 NIO 异步调度的优势。因此,您可以获得平滑透明的 NIO 输出和可预测的内存消耗。此外,针对 Jetty 等服务器的性能测量显示性能提高了 2 倍。

http://simpleweb.svn.sourceforge.net/viewvc/simpleweb/trunk/application/Plotter/ApacheBench/ScalabilityApacheBench.png?revision=1448