继this question之后,我实际上正处于为我的一个项目寻找合适的HTTP容器的阶段。我查看了几个容器,但我仍然不确定哪一个最适合高负载AJAX请求。 Apache Mina看起来很有希望,但也相对复杂。名为AsyncWeb的异步Web服务器实现似乎已经与Mina合并,但我找不到它的任何生产方法。在另一个问题中,我推荐了我真正喜欢的Simple HTTP服务器,因为它简单,清晰,干净,但我仍然不知道它是否符合目的。
此外,我不确定选择哪个请求处理概念:
为每个传入连接创建一个调度程序线程(优化当然可能包括一个线程池和一个调度队列),即完成所有工作。优点可能是,我不必处理那么多同步问题,但它可能会大大降低高负载的吞吐量。
因为它将是一个高度模块化的应用程序“流水线”(我猜可能有更合适的术语;)方法也可以起作用:创建固定数量的线程,每个线程用于某个任务。 例如。一个用于请求处理 - >一个用于标题反序列化(如果我以不同的格式输入,如已提交的HTML表单,XML-RPC,JSON等) - >一个用于“控制器调度”(做我想对这些数据做的任何事情) - >还有一个用于以所需格式(JSON,XML,HTML等)序列化输出,并将每个请求移动到这些级别,直到完成为止。可能更难以实现,但我有固定数量的线程(数量也可以依赖于硬件)和关注点的清晰分离。
任何可能适合的框架的经验以及两种不同的处理方法?
答案 0 :(得分:7)
Hightide已预先配置 最先进的Ajax通信 DWR,ActiveMQ-Web等库 (JMS到浏览器)和Bayeux 协议(也称为cometd)。 部署您的应用程序 Hightide意味着它将扩展 顺利地结合了 Jetty的智能IO层和 延续机制
具体来说,已经投入了大量的工作来优化Jetty for AJAX。有关详细信息,请参阅this blog entry
答案 1 :(得分:3)
Simple HTTP subversion存储库中有一个示例。
它使用彗星演示实时市场数据,并且只有一个线程将更新发送到任意数量的客户端。 Simple有一个透明的传输层,它提供阻塞I / O语义,其优点是可以为每个连接的客户端提供基于固定ByteBuffer队列的NIO异步调度。因此,您可以获得具有可预测内存消耗的平滑透明NIO输出。此外,针对Jetty等服务器的性能测量显示x2性能提升。