NodeJS VS Tomcat搭建高并发静态文件服务器

NodeJS因为它的非阻塞I/O和优秀的高并发性能受到越来越多的关注,而且NodeJS的服务器相对于Nginx其搭建非常简单,仅需很少的步骤和设置就可以搭建一个高性能的文件服务器。之前我有一台Tomcat服务器兼做文件下载的功能,后来我在上面部署了一个NodeJS来提供静态文件的下载,然后经过压力测试发现NodeJS在静态文件的服务能力上强于Tomcat很多,主要体现在支持的并发连接数多,处理单个请求快。下面介绍一下我部署NodeJS静态资源文件服务器的过程和压测结果。

这里以Ubuntu系统为例介绍NodeJS服务器的搭建过程

首先需要安装node服务和npm工具,Ubuntu安装命令如下:

$sudo apt install nodejs-legacy $sudo apt install npm

如果网速还可以,那么安装这两个东西的时间也就在一分钟以内。

然后我们需要为我们的nodejs应用创建一个目录,比如文件夹的名字叫myapp

$ mkdir myapp $ cd myapp

然后通过 npm init 命令为你的应用创建一个 package.json 文件,作用是初始化Express这个nodeJS框架的

$ npm init

敲回车以后需要输入一些东西,全部用默认的就可以,一路回车敲下去

NodeJS VS Tomcat搭建高并发静态文件服务器


输入“yes”后,会在myapp目录下生成一个.json文件,如上图,然后我们安装express框架并将其保存到依赖列表中

$ npm install express --save

然后我们需要创建一个index.js作为nodeJS服务器的入口文件

NodeJS VS Tomcat搭建高并发静态文件服务器


 

在index.js中,输入如下内容

var express = require('express'); var app = express(); app.get('/', function (req, res) { res.send('Hello World!'); }); app.use(express.static('public')); var server = app.listen(3000, function () { var host = server.address().address; var port = server.address().port; console.log('Example app listening at %s:%s', host, port); });


其中

app.use(express.static('public'));

表示将静态资源文件所在的目录作为参数传递给 express.static 中间件以提供静态资源文件的访问。例如,假设在 /public 目录放置了图片、CSS 和 JavaScript 文件,就可以通过这个配置将public底下的文件映射到url上面

NodeJS VS Tomcat搭建高并发静态文件服务器


然后我在images目录放了一个图片文件,名字叫pic1.jpg

然后我启动nodeJS服务器,用下面的命令

$ node index.js

执行这段指令的时候会在控制台打出刚才我在index.js中配置的console函数,控制台输出Example app listening at :::3000,表示NodeJS服务器已经成功启动并监听3000端口.

注意:如果此时点击ctrl+c会终止掉nodeJS的服务进程,包括SSH工具

然后通过浏览器访问:3000 可以看到浏览器输出一句Hello World!,说明NodeJS服务器运转正常

NodeJS VS Tomcat搭建高并发静态文件服务器


然后访问我们部署好的静态文件pic1.png只需要访问:3000/images/pic1.jpg就可以看到浏览器下载到的图片了,这里要注意public文件夹映射到了3000端口的根目录,也就是说不必在url中输入/public。

NodeJS VS Tomcat搭建高并发静态文件服务器


下面我们来对比一下tomcat静态文件下载和nodeJS静态文件下载的并发性能,测试工具是apache的ab,测试目标是一个20m左右的apk文件,首先看一下tomcat的表现

测试环境:

网络环境:本地回环

测试客户端:本机

被测试服务器:本机

服务器系统:Ubuntu 14.04

服务器配置:Intel(R) Core i7(TM) CPU 3.40GHz 2 CPUS

内存:8GB

NodeJS版本: v0.4.12

我在服务器上同时部署了80端口的tomcat和3000端口的nodeJS,tomcat的文件目录为webapp/项目目录/release/,tomcat所有设置除了端口以外均采用默认设置,使用两个20MB左右的apk压缩包做测试目标,测试命令分别为:

ab -n1000 -c100 192.168.1.81/release/test.apk

ab -n1000 -c100 192.168.1.81:3000/test.apk

让我们来观察一下控制台输出:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/692559500d86d2a2af680dc55074bf05.html