NODE 是什么?
不是独立的语言 不是JavaScript框架 是能都让JavaScript运行在服务端的开发平台
NODE 可以作为服务器向用户提供服务,与PHP、Python相比,跳过了Apache、Nginx等HTTP服务器面向用户提供服务,直接面向前端开发。
Node.js 与JavaScript区别
传统意义上的JavaScript是有ECMAScript、文档对象模型(DOM)和浏览器对象模型(BOM)组成
Node.js 只包含ECMAScript的一个实现,不包含DOM和BOM
Node.js 是一个让JavaScript运行在浏览器之外平台,实现了诸如文件系统、模块包、操作系统API、网络通信等Core JavaScript没有或者不完善的功能
Node.js 能做什么
具有复杂逻辑得网站
基于社交网络的大规模web应用
Web Socket 服务器
TCP/UDP套接字应用程序
命令行工具
交互式终端程序
带有图像用户界面的本地应用程序
单元测试工具
客户端JavaScript编译器
Node.js 内建了HTTP服务器,可以轻而易举地实现一个网站和服务器的组合,免去搭建和调用HTTP服务器的过程
异步式I/O与事件驱动
Node.js 采用异步式I/O与事件驱动的架构设计。对于高并发的解决方案,传统的架构是多线程模型,为每个业务逻辑提供一个系统线程,通过系统线程切换来弥补同步式I/O调用的时间开销。Node.js使用的是单线程模型,对于所有的I/O都采用异步式的请求,避免了频繁的上下文的切换。Node.js在执行的过程中会维护一个事件队列,程序在执行时进入事件循环等待下一个事件到来,每个异步式I/O请求完成后会被推送到事件队列,等待程序进程进行处理
Node.js 的异步机制是基于事件的,所有的磁盘I/O、网络通信、数据库查询都以非阻塞的方式请求,返回的结果由事件循环来处理。Node.js进程在同一时刻只会处理一个事件,完成后立即进入事件循环检查并处理后面的事件。
Node.js 的架构
Node.js 用异步式I/O和事件驱动代替多线程,带来可观的性能提升。Node.js除了使用V8作为JavaScript引擎以外,还使用了高效的libev和libio库支持事件驱动和异步式I/O。Node.js 的开发者在libev和libeio的基础上还抽象了层libuv来实现跨平台,提供给POSIX操作系统和windows使用。
Node.js与PHP + Nginx性能对比
Snoopyxd详细对比了Node.js与PHP+Nginx组合,结果显示在3000并发连接、30秒的
测试下,输出“hello world”请求:
PHP每秒响应请求数为3624,平均每个请求响应时间为0.39秒;
Node.js每秒响应请求数为7677,平均每个请求响应时间为0.13秒。
而同样的测试,对MySQL查询操作:
PHP每秒响应请求数为1293,平均每个请求响应时间为0.82秒;
Node.js每秒响应请求数为2999,平均每个请求响应时间为0.33秒。
网友评论