什么是事件驱动的Web服务器

时间:2010-10-20 19:29:10

标签: webserver

我想了解事件驱动的Web服务器的基础知识,我知道其中一个是Tornado,但是非常感谢任何其他信息。

由于

3 个答案:

答案 0 :(得分:25)

答案 1 :(得分:15)

Web服务器需要处理并发连接。有很多方法可以做到这一点,其中一些是:

  • 每个连接的进程。
  • 每个连接的进程,并准备好一组进程。
  • 每个连接的一个帖子。
  • 每个连接的一个线程,并且有一个准备使用的线程池。
  • 单个进程,在回调时处理每个事件(接受的连接,可读取的数据,可以写入客户端,......)。
  • 以上的一些组合。
  • ...

最后,区别最终在于如何存储每个连接状态(显式地在上下文结构中,隐式地在堆栈中,隐式地在延续中......)以及如何在连接之间进行调度(让操作系统调度程序执行此操作,让操作系统轮询原语执行此操作,...)。

答案 2 :(得分:1)

事件驱动的方式旨在解决C10K问题。它将传统的“推模型”转变为“拉模型”,以创建非阻塞的事件I / O.简而言之,事件驱动的体系结构避免产生额外的线程和线程上下文切换开销,并且通常最终会获得更好的性能和更少的资源消耗。

rails开发人员的一些概述,也包括类比: http://odysseyonrails.com/articles/8