nodejs实战的相关笔记
特征:
- nodejs的显著特征是 异步和事件驱动机制,nodejs库小巧精悍
- nodejs仍然保留了javascript单线程编程模型,多线程一般会引入一些bug(Go,Rust会试图提供更加安全的并发操作)
- 非阻塞I/O(访问磁盘和网络这样的I/O请求),nodejs的事件、异步API和非阻塞I/O解决了这个问题。处理高并发
非阻塞I/O的术语解释,就是程序可以在做其他事情的时候发起一个请求来获取网络资源,然后当网络操作完成后,将会运行一个callback函数来处理这个操作的结果
即使你只有一个nodejs的单线程,单进程的node web应用,它也是可以同时处理上千个网络访客发起的连接。(也就是我们说的高并发)。
事件轮询(event loop)
事件轮询是单向的先入先出的队列。
首先是计时器开始执行,这些计时器都是用js的setTimeout和setInterval来安排的 =》 运行I/O回调,触发回调函数,期间会获取新的I/O事件,最后是用setImmediate来安排回调