单线程模型
1、Node.js 使用 单线程 来处理客户端请求和执行任务
2、如果遇到异步任务,node.js使用事件循环和异步 I/O 模型,使得它能够高效地处理大量并发请求
异步操作有哪些
1、读取文件
2、网络请求
3、数据库操作等等
异步非阻塞 I/O
Node.js 中的 I/O 操作(如文件读取、网络请求、数据库查询等)是 异步 的,这意味着这些操作会被立即发起,Node.js 会继续执行其他任务,而不会等待 I/O 操作完成。操作完成后,Node.js 会通过 回调函数(callback)通知应用程序。
- 异步(Asynchronous):异步操作的特点是调用后不会等待其结果,而是立即返回,继续执行后续代码,待操作完成后再通过回调通知处理结果。
- 非阻塞(Non-blocking):非阻塞意味着 I/O 操作不会阻塞程序的执行。即使正在执行 I/O 操作,主线程也不会被“卡住”,它会继续执行后续代码。
异步非阻塞 I/O的特点
1、非阻塞性
2、异步性
3、提高并发能力
- 由于 I/O 操作不会阻塞主线程或进程,多个 I/O 操作可以并行执行,不需要为每个请求创建新的线程或进程。这使得系统能够处理大量并发请求,而不会因为 I/O 操作而导致性能下降或资源浪费。
- 常见于需要处理高并发的场景,如 Web 服务器、数据库查询、实时通信等。
4、节省系统资源
5、事件驱动
- 异步非阻塞 I/O 操作通常是事件驱动的。应用程序通过事件循环来监听和处理 I/O 操作的完成。当 I/O 操作完成时,操作系统或底层框架会触发事件,程序通过回调函数来处理结果。
- 这种方式常见于基于事件循环的框架,如 Node.js。
6、延迟执行