(3)异步、事件驱动模型(NodeJS核心特点)

我们同样是要发起请求,等待服务器端响应;

异步操作结束后会执行后续逻辑,这个通知动作在NodeJS中叫做回调(Callback)

能在事件(I/O)处理完成后继续执行后面的逻辑,这体现了NodeJS的显著特点,异步机制、事件驱动整个过程没有阻塞新用户的连接,也不需要维护已连接用户和I/O操作之间的连接。

基于这样的机制,理论上陆续有用户请求连接,NodeJS都可以进行响应,因此NodeJS能支持比Java、PHP程序更高的并发量,虽然维护事件队列也需要成本

再由于NodeJS是单线程,事件队列越长,得到响应的时间就越长,并发量上去还是会力不从心。

总结一下NodeJS是怎么解决并发连接这个问题的:更改连接到服务器的方式,每个连接发射(emit)一个在NodeJS引擎进程中运行的事件(Event),放进事件队列当中,而不是为每个连接生成一个新的OS线程(并为其分配一些配套内存)。