我想了解事件驱动的Web服务器的基础知识,我知道其中一个是Tornado,但是非常感谢任何其他信息。
由于
答案 0 :(得分:25)
这里有一个很好的类比:
http://daverecycles.tumblr.com/post/3104767110/explain-event-driven-web-servers-to-your-grandma
答案 1 :(得分:15)
Web服务器需要处理并发连接。有很多方法可以做到这一点,其中一些是:
最后,区别最终在于如何存储每个连接状态(显式地在上下文结构中,隐式地在堆栈中,隐式地在延续中......)以及如何在连接之间进行调度(让操作系统调度程序执行此操作,让操作系统轮询原语执行此操作,...)。
答案 2 :(得分:1)
事件驱动的方式旨在解决C10K问题。它将传统的“推模型”转变为“拉模型”,以创建非阻塞的事件I / O.简而言之,事件驱动的体系结构避免产生额外的线程和线程上下文切换开销,并且通常最终会获得更好的性能和更少的资源消耗。
rails开发人员的一些概述,也包括类比: http://odysseyonrails.com/articles/8