- Client 请求到达 node api,该请求被添加到Event Queue(事件队列)。这是因为Node.js 无法同时处理多个请求。
- Event Loop(事件循环) 始终检查 Event Queue 中是否有待处理事件,如果有就从 Event Queue 中从前到后依次取出,然后提供服务。
- Event Loop 是单线程非阻塞I/O,它会把请求发送给 C++ Thread Pool(线程池)去处理,底层是基于C++ Libuv 异步I/O模型结构可以支持高并发。
- 现在 C++ Thread Pool有大量的请求,如数据库请求,文件请求等。
- 任何线程完成任务时,Callback(回调函数)就会被触发,并将响应发送给 Event Loop。
- 最终 Event Loop 会将请求返回给 Client。