Node.js是一套
用来编写高性能网络服务器
的JavaScript工具包。Node.js是一个能够快速构建网络服务及应用的平台,该平台的构建是基于GoogleV8引擎(应用于Google Chrome浏览器,
执行Javascript的速度很是快,性能很是好
)。
Node对V8一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好(
例如,在服务器环境中,处理二进制数据一般是必不可少的,但Javascript对此支持不足,所以,V8.Node增长了Buffer类,方便而且高效地 处理二进制数据。
)。它主要为解决服务器高并发而生。
在 Java™ 和 PHP 这类语言中,每一个链接都会生成一个新线程,每一个新线程可能须要 2 MB 的配套内存。在一个拥有 8 GB RAM 的系统上,理论上最大的并发链接数量是 4,000 个用户。随着您的客户群的增加,若是但愿您的 Web 应用程序支持更多用户,那么,您必须添加更多服务器。固然,这会增长服务器成本、流量成本和人工成本等成本。除这些成本上升外,还有一个潜在技术问题,即用户可能针对每一个请求使用不一样的服务器,所以,任何共享资源都必须在全部服务器之间共享。鉴于上述全部缘由,整个 Web 应用程序架构(包括流量、处理器速度和内存速度)中的瓶颈是:
服务器可以处理的并发链接的最大数量
。
Node 解决这个问题的方法是:为每个链接在 Node 引擎的进程中产生事件而不是为每一个链接生成一个新的 OS 线程(并为其分配一些配套内存)。Node 声称它毫不会死锁,由于它根本不容许使用锁,它不会直接阻塞 I/O 调用。Node 还宣称,运行它的服务器能支持数万个并发链接。
nodeJS的第一原则
事件驱动编程
事件发生时调用的回调函数能够在捕获事件处进行编写。这样可使代码容易编写和维护,没有复杂的面向对象框架,没有接口,没有过分设计的可能性。只需监听事件,编写一个回调函数,其余事情均可以交给系统处理。
nodeJS的知识结构