欢迎大家指导与讨论 : )
注:此笔记是基于《NodeJS开发指南》,并不是原著。
第一章——NodeJS简介
NodeJS是一个可以让Javascript运行在服务器端的平台,它为实时Web应用(Real-time Web)开发而生。拥有实时响应,超大规模数据要求下架构的可扩展性。它采用了单线程、异步式I/O、事件驱动式的程序设计模型。统意义上,Javscript是由ECMA、DOM、BOM组成。
NodeJS采用的是单线程模型,对于所有的I/O都采用异步式的请求方式,避免了频繁的上下文切换。NodeJS在执行过程中会维护一个事件队列,程序在执行时进入事件循环等待下一个事件到来,每个异步式I/0请求完成之后会被推送到事件睡了,等待程序进行处理。
NodeJS通过基于事件的异步回调机制,来进行非阻塞请求。例如,磁盘I/O、网络通讯、数据库查询等需要时间开销的事件。一个生动的例子可以理解NodeJS机制:一个生产鸡腿的工厂,里面只有一条流水线,工人A在这条流水线的顶端,他负责为鸡腿打上塑料包装,并且他同一个时刻只能操作一只大鸡腿(一条事件队列,NodeJS进程在同一时间只会处理一个事件)。工人A做事非常有效率,每每见到工序已经完善的鸡腿会毫不犹豫地进行包装,但是每当他看到一些还没有完成工序的鸡腿流入了流水线,他就会和鸡腿说: "hey! 哥们,你还没有上酱油呢!我先把你拿去隔壁的上酱油流水线,不过你放心,等你上完酱油,那条流水线会再把你送回来处理的啦,等下我们再见!我先处理你之后的鸡腿吧~"(进程不会等待,而是直接继续执行后面的语句,阻塞事件进入事件循环,当完成时会重新进入到事件队列并等待被处理,那时候线程才会调用之前的回调函数继续执行后面的逻辑)。
时间: 2024-10-24 11:03:19