了解Node.js

Node.js的用途web

一、建立具备实时推送能力的网站数据库

二、历来不是用于解决大规模计算问题而建立的。它的出现是为了解决大规模I/O 的问题服务器

三、Node.js 真正的亮点在于建设高性能,高扩展性的互联网应用——由于它可以处理庞大的而且高吞吐量的并发链接。用于特殊的需求,而不是跟日常的同样Web开发同样网络

Node.js原理多线程

Node.js给了开发者一个使用事件驱动来实现异步开发的优秀解决方案并发

Node.js须要的环境
V8是谷歌开发的,目前公认最快的 Javascript 解析引擎,libuv 是一个开源的、为 Node 定制而生的跨平台的异步 IO 库异步

Node.js推送与传统比较
一、Node.js 在实时的 Web应用上采用了基于 WebSocket 的推送技术。socket

二、在通过了基于无状态的请求-返机制的无状态交互以后,咱们终于有了实时的,双向链接的web应用,客户端和服务器端均可以发起通讯,可以自由地交换数据。与此造成鲜明对比的是传统的 web响应模式,客户端老是主动发起通讯而服务端被动返回。此外,这些都是基于运行在标准80端口上的开放Web组件(HTML、CSS和JS)
三、传统的网络服务技术,是每一个新增一个链接(请求)便生成一个新的线程,这个新的线程会占用系统内存,最终会占掉全部的可用内存。而 Node.js 仅仅只运行在一个单线程中,使用非阻塞的异步 I/O 调用,全部链接都由该线程处理,在 libuv 的加分下,能够容许其支持数万并发链接(所有挂在该线程的事件循环中)。tcp

注意:Websocket  是tcp/ip 协议用于客户端,对等网等,WebService 是http协议函数

Node.js原则

一、Node.js 都将遵循一个基本原则:响应事件,处理多个并发链接,并保持流动性的用户体验。
二、在全部客户端的请求共享单一线程时也会有问题, 这也是一个编写 Node.js 应用的潜在缺陷. 首先, 大量的计算可能会使得 Node.js 的单线程暂时失去反应, 并致使全部的其余客户端的请求一直阻塞, 直到计算结束才恢复正常。Nodejs 是一个线程一个线程来处理全部的连接,因此不管是计算卡了或者是被异常阻塞了均可能会影响到其余全部的连接

Node.js应用:
一、Node.js在数据真正的写入以前就认可客户端的数据是真实的。因为正对于数据库的操做其实也是一种堵塞的,因此在还没真正操做完成前,Node.js就认为已经处理完成了。(eg.日志记录、用户跟踪数据,Facebook上的点赞数)
在开发中一般的状况一般是,种耗时的操做经过回调函数来异步处理,主线程继续往下执行

二、Node.js以数据流的方式传递数据,那么就能实时进行音频和视频编码

Node.js弱点:
一、Node.js不该该使用在关系型数据库 ( Sequelize 和 Node ORM2模块 )。

二、Node.js不该该繁重的服务端计算和处理,耗CPU的计算机。

总结:

Node.js怎样处理并发的,多个请求的,主要是经过回调函数,可是若是请求的是同一个方法,那么就只有等待,若是请求的不一样的方法,就是非阻塞的,就算当前请求正在等待,可是仍能够执行另外一个请求对应的方法。等空闲的时候,再去执行第一个请求,经过回调函数获得结果。Java,经过多线程处理,若是又一个请求来了,会在开辟一个线程。

相关文章
相关标签/搜索