传统的Web服务器,像Apache2,是比较弱的消息服务器,因为它们会为每个连接创建和分配一个进程(或者是进程),并且只要连接保持着,进程就必须“活着”。你可能会猜到,在有了几百或者几千个连接之后,连接服务会消耗掉Web服务器的所有资源。Apache2从来都不是为此目的而设计的,它是作为内容服务器而被编写出来的,它的理念是在响应请求时,尽可能快地把数据推送出去,然后尽可能快地关闭连接。对于这些用途类型,Apache2是非常棒的选择,只要问问YouTube就知道了。
相比之下,Node.js是一个非常出色的消息服务器。由于它的事件模型(event model),它不会为每个连接创建一个进程。当打开或者关闭连接的时候,它会进行记录,在打开和关闭连接期间会做些维护工作。因此在一般的硬件上,它能够处理几万甚至几十万的并发链接。直到一个或者多个打开的连接发出了消息事件(比如请求或者响应),Node.js才会开始重要的工作。
网友评论