认识Node.js
Posted Java引导者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了认识Node.js相关的知识,希望对你有一定的参考价值。
什么是node.js
Node.js是一个让javascript运行在服务器端的开发平台。
而JavaScript是运行在浏览器的解释型的编程语言,是一种脚本语言,所以nodejs无需编译就可以运行。
NodeJs采用的是V8 JavaScript引擎,和google的Chrome浏览器采用的引擎的一样,就我目前所知,这是目前运行JavaScript最快、最稳定的引擎了。
NodeJs是采用单线程、异步式I/O、事件驱动式的程序设计模型。
Node.js能做什么
正如 JavaScript 为客户端而生,Node.js 为网络而生。其实Node.js 能做的远不止开发一个网站那么简单,使用 Node.js,你可以轻松地开发:
1、具有复杂逻辑的网站;
2、基于社交网络的大规模Web应用;
3、Web Socket服务器;
4、TCP/UDP套接字应用程序;
5、命令行工具;
6、交互式终端程序;
7、带有图形用户界面的本地应用程序;
8、单元测试工具;
Node.js优缺点
1. 高并发(最重要的优点)
2. 适合I/O密集型应用
详细对比了 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秒。
1. 不适合CPU密集型应用;CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起;
解决方案:分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞I/O调用的发起;
2. 只支持单核CPU,不能充分利用CPU
解决:目前原生已经支持多核利用。
3. 可靠性低,一旦代码某个环节崩溃,整个系统都崩溃
原因:单进程,单线程。
解决方案:
(1)Nnigx反向代理,负载均衡,开多个进程,绑定多个端口;
(2)开多个进程监听同一个端口,使用cluster模块。
适合Node.js 的场景
这是NodeJS最理想的应用场景,可以处理数万条连接,本身没有太多的逻辑,只需要请求API,组织数据进行返回即可。它本质上只是从某个数据库中查找一些值并将它们组成一个响应。由于响应是少量文本,入站请求也是少量的文本,因此流量不高,一台机器甚至也可以处理最繁忙的公司的API需求。
目前MVC的架构,在某种意义上来说,Web开发有两个UI层,一个是在浏览器里面我们最终看到的,另一个在server端,负责生成和拼接页面。不讨论这种架构是好是坏,但是有另外一种实践,面向服务的架构,更好的做前后端的依赖分离。如果所有的关键业务逻辑都封装成REST调用,就意味着在上层只需要考虑如何用这些REST接口构建具体的应用。那些后端程序员们根本不操心具体数据是如何从一个页面传递到另一个页面的,他们也不用管用户数据更新是通过Ajax异步获取的还是通过刷新页面。
例如个性化应用,每个用户看到的页面都不一样,缓存失效,需要在页面加载的时候发起Ajax请求,NodeJS能响应大量的并发请求。
总而言之,NodeJS适合运用在高并发、I/O密集、少量业务逻辑的场景。
安装配置
Node 包管理器(npm)是一个由 Node.js 官方提供的第三方包管理工具(目前版本都是默认随着nodejs一起安装,可用 npm –v 命令测试是否安装。 ),它能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
1、用户从NPM服务器下载别人编写的第三方包到本地使用。
2、用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
3、用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
npm有些类似于java的maven。
部署nodejs到服务器,我在公司都是用pm2的,我在这就用pm2说一下吧。
1、连远程服务器
2、开始部署
(1)把整个项目代码拉到服务器(不用拉node_modules文件,避免上传太慢)
(2)在项目目录下运行:npm install(加载node_modules)
(3)为避免端口冲突,可查看端口号占用情况:lsof -i:[端口号],(有时设置了,还需要防火墙出入站规则)
(4)修改配置文件(config.js),设置端口号
(5)第一次启动服务:在项目目录下:pm2 start [启动文件] --name [服务名称]
然后就完成了。
然后我们再说说怎么安装pm2,额...,口有点渴,今天就先到这了。
ps:安装nodeJs可访问https://nodejs.org/en/download/下载nodejs,选择对应系统版本下载安装即可(步骤:运行exe,一直next)。验证是否安装成功请使用控制台,输入 node –v 命令看是否输出版本号。
以上是关于认识Node.js的主要内容,如果未能解决你的问题,请参考以下文章