nodejs架构
Native modules
- 当前层内容由JS实现
- 提供应用程序可直接调用库,例如fs、path、http等
JS语言无法直接操作底层硬件设置,如果想通信还需要胶水层桥梁
Builtin modules “胶水层”
文件的读写行为等
-
底层
V8:执行JS代码,提供桥梁接口
- Libuv:事件循环、事件队列、异步IO等问题
-
nodejs与JavaScript
Node的简介
起初是为了实现高性能的web服务器,后来慢慢发展成一门服务端“语言”
- IO是计算机操作过程中最缓慢的环节
多线程、进程
- Java语言,使用多并发多进程线程处理
解释:点餐,有多少个客人,配多少个服务员,问题是如果有特别多的客人,会导致服务员不够,客人无响应
应答者模式(重要)
出现Reactor模型,单线程完成单线程工作(应答者模式)
- 解释:例如点餐,保留一个服务员,让客人去点餐,当客人点餐行为结束后,呼叫服务员就OK了
- Reactor模式下实现异步IO、事件驱动
Node结合Reactor模式,结合JS本身的单线程、事件驱动的架构、和异步编程的特性,让单线程远离阻塞,通过异步非阻塞的IO更好的使用CPU资源,实现高并发处理
不适用的情况,比如客人不需要思考吃什么,而是立即点餐,这个时候,一个服务员是不够的,是CPU密集型
- Node处理的更多的是IO密集型的并发请求,而不是大量且复杂的业务处理