快速NIO,Java异步HTTP服务器

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

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

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

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

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

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

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

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

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

你可能想看Jetty ,特别是Hightide

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

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