通俗Nodeca88手机版登录网页,js的基本知识不难汇总

以下内容转自:http://www.infoq.com/cn/articles/what-is-nodejs/
作者:崔康

Node.js从二〇〇九年降生至今,已经发展了两年有余,其长进的速度明显。从在github的访问量当先Rails,到去年终Node.jsS创办人RyanDalh加盟Joyent得到公司援救,再到当年宣布Windows移植版本,Node.js的前景获得了技术社区的必定。InfoQ一贯在关怀Node.js的向上,在当年的五次Qcon大会(日本首都站和乔治敦站)都有专门的讲座。为了更好地促进Node.js在国内的技术推广,大家决定进行“深切浅出Node.js”专栏,邀请来自Node.js领域的布道师、开发人士、技术专家来叙述Node.js的各地点内容,让读者对Node.js有更深刻的摸底,并且可以积极投入到新技巧的议论和施行中。

 

专栏的率先篇小说《什么是Node.js》尝试从种种角度来阐释Node.js的基本概念、发展历史、优势等,对该领域不熟习的开发人士可以经过本文精通Node.js的一部分基础知识。

【编者按】:Node.js从二零零六年出生至今,已经进化了两年有余,其成长的进度明显。从在github的访问量超越Rails,到二〇一八年终Node.jsS创办人RyanDalh加盟乔伊ent得到集团捐助,再到今年公布Windows移植版本,Node.js的前景得到了技能社区的必定。InfoQ从来在关怀Node.js的腾飞,在当年的五回Qcon大会(香港(Hong Kong)站和瓜亚基尔站)都有特其他讲座。为了更好地推向Node.js在境内的技术推广,我们决定进行“深刻浅出Node.js”专栏,邀请来自Node.js领域的布道师、开发人员、技术专家来描述Node.js的各地点内容,让读者对Node.js有更深刻的刺探,并且可以主动投入到新技巧的座谈和施行中。

从名字说起


关于Node.js的技术报道越来越多,Node.js的写法也是各式各种,有写成NodeJS的,有写成Nodejs的,到底哪种写法最专业吗,我们不妨遵从合法的传道。在Node.js的官方网站上,一直将其系列名为”Node“或者”Node.js“,没有发觉其他的说教,”Node“用的最多,考虑到Node这么些单词的情趣和用途太普遍,简单让开发人士误解,我们利用了第二种叫做——”Node.js“,js的后缀点出了Node项目标本心,其他的称呼五花八门,没有适度的出处,我们不引进应用。

专栏的率先篇小说《什么是Node.js》尝试从各种角度来阐释Node.js的基本概念、发展历史、优势等,对该领域不熟谙的开发人士可以透过本文精晓Node.js的局地基础知识。

Node.js不是JS应用、而是JS运行平台

从名字说起

至于Node.js的技巧广播公布越来越多,Node.js的写法也是出乖弄丑,有写成NodeJS的,有写成Nodejs的,到底哪种写法最专业吧,大家不妨听从合法的说教。在Node.js的官方网站上,一贯将其连串名为”Node“或者”Node.js“,没有发觉其他的传道,”Node“用的最多,考虑到Node那几个单词的意趣和用途太普遍,不难让开发人士误解,大家选拔了第二种名叫——”Node.js“,js的后缀点出了Node项目标本心,其余的名目五花八门,没有适合的出处,大家不推荐使用。

来看Node.js这些名字,初学者或许会误以为那是一个Javascript应用,事实上,Node.js采取C++语言编写而成,是一个Javascript的周转条件。为何使用C++语言呢?据Node.js创办者RyanDahl纪念,他最初梦想选取Ruby来写Node.js,但是后来发现Ruby虚拟机的习性无法满意她的渴求,后来他尝试采取V8引擎,所以接纳了C++语言。既然不是Javascript应用,为什么叫.js呢?因为Node.js是一个Javascript的运行条件。提到Javascript,我们首先想到的是平常行使的浏览器,现代浏览器包括了各个零件,包蕴渲染引擎、Javascript引擎等,其中Javascript引擎负责解释实施网页中的Javascript代码。作为Web前端最要害的语言之一,Javascript平素是前者工程师的专利。但是,Node.js是一个后端的Javascript运行环境(接济的系统包含*nux、Windows),这表示你可以编写系统级或者服务器端的Javascript代码,交给Node.js来诠释实施,简单的吩咐类似于:

Node.js不是JS应用、而是JS运行平台

 

来看Node.js这一个名字,初学者或许会误以为那是一个Javascript应用,事实上,Node.js拔取C++语言编写而成,是一个Javascript的运转环境。为何使用C++语言呢?据Node.js创办者RyanDahl回想,他最初梦想利用Ruby来写Node.js,然则后来发现Ruby虚拟机的性能否够满意他的渴求,后来她尝试使用V8引擎,所以选用了C++语言。既然不是Javascript应用,为什么叫.js呢?因为Node.js是一个Javascript的运作环境。提到Javascript,大家先是想到的是普普通通行使的浏览器,现代浏览器包蕴了各个零件,包涵渲染引擎、Javascript引擎等,其中Javascript引擎负责解释施行网页中的Javascript代码。作为Web前端最要害的言语之一,Javascript平素是前者工程师的专利。不过,Node.js是一个后端的Javascript运行环境(协理的种类包蕴*nux、Windows),那意味着你可以编写系统级或者服务器端的Javascript代码,交给Node.js来诠释施行,不难的通令类似于:

#node helloworld.js

Node.js选用了谷歌Chrome浏览器的V8引擎,性能很好,同时还提供了许多系统级的API,如文件操作、网络编程等。浏览器端的Javascript代码在运行时会受到种种安全性的界定,对客户系统的操作不难。比较之下,Node.js则是一个两全的后台运行时,为Javascript提供了其余语言可以落到实处的大队人马功力。

#node helloworld.jsNode.js

Node.js选取事件驱动、异步编程,为网络服务而安排

相关厂商内容

使用了谷歌(Google)Chrome浏览器的V8引擎,性能很好,同时还提供了广大系统级的API,如文件操作、网络编程等。浏览器端的Javascript代码在运行时会受到各样安全性的界定,对客户系统的操作简单。比较之下,Node.js则是一个周到的后台运行时,为Javascript提供了此外语言可以已毕的不少效益。

属性优化最佳实践经验谈

Node.js采纳事件驱动、异步编程,为网络服务而规划

一流App的实时性能监控与性能优化实践

事件驱动这一个词并不生疏,在一些传统语言的网络编程中,大家会用到回调函数,比如当socket资源落成某种境况时,注册的回调函数就会举办。Node.js的规划思想中以事件驱动为主旨,它提供的多数API都是基于事件的、异步的品格。以Net模块为例,其中的net.Socket对象就有以下事件:connect、data、end、timeout、drain、error、close等,使用Node.js的开发人士须求基于自己的工作逻辑注册相应的回调函数。这个回调函数都是异步执行的,那表示纵然在代码结构中,这么些函数看似是逐一注册的,但是它们并不看重于自我出现的一一,而是等待相应的风云触发。事件驱动、异步编程的陈设性(感兴趣的读者可以查阅作者的另一篇小说《Node.js的异步编程风格》),紧要的优势在于,丰富利用了系统资源,执行代码无须阻塞等待某种操作已毕,有限的资源得以用来其余的职务。此类设计卓殊适合于后端的网络服务编程,Node.js的靶子也在于此。在服务器开发中,并发的乞请处理是个大题材,阻塞式的函数会造成资源浪费和岁月推移。通过事件注册、异步函数,开发人员可以拉长资源的利用率,性能也会革新。

微信图片视频背后的EB级存储引擎安插

从Node.js提供的支撑模块中,大家得以看看包括文件操作在内的居多函数都是异步执行的,那和价值观语言存在分歧,而且为了便于服务器开发,Node.js的网络模块更加多,包蕴HTTP、DNS、NET、UDP、HTTPS、TLS等,开发人员可以在此基础上急忙构建Web服务器。以简要的helloworld.js为例:

漏斗模型:京东物流系统高并发架构演进之路

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(80, "127.0.0.1");

何以支付一个商业智能推荐系统?

 

连锁赞助商

ca88手机版登录网页 1

ArchSummit阿布扎比2017,五月7-8日,布拉迪斯拉发·华裔城洲际饭店,出色内容当先看

 

事件驱动这一个词并不生疏,在某些传统语言的网络编程中,大家会用到回调函数,比如当socket资源达成某种意况时,注册的回调函数就会执行。Node.js的设计思想中以事件驱动为基本,它提供的绝半数以上API都是按照事件的、异步的风格。以Net模块为例,其中的net.Socket对象就有以下事件:connect、data、end、timeout、drain、error、close等,使用Node.js的开发人士须要依据自己的业务逻辑注册相应的回调函数。这么些回调函数都是异步执行的,那意味着就算在代码结构中,那么些函数看似是逐一注册的,不过它们并不借助于于自家出现的逐条,而是等待相应的轩然大波触发。事件驱动、异步编程的安插(感兴趣的读者可以查看作者的另一篇小说《Node.js的异步编程风格》),紧要的优势在于,丰富利用了系统资源,执行代码无须阻塞等待某种操作落成,有限的资源可以用于其他的义务。此类设计极度适合于后端的网络服务编程,Node.js的指标也在于此。在服务器开发中,并发的央浼处理是个大问题,阻塞式的函数会导致资源浪费和时间推移。通过事件注册、异步函数,开发人士可以增强资源的利用率,性能也会立异。

从Node.js提供的支持模块中,我们可以看到包蕴文件操作在内的多多函数都是异步执行的,这和传统语言存在不一样,而且为了有利于服务器开发,Node.js的网络模块尤其多,包含HTTP、DNS、NET、UDP、HTTPS、TLS等,开发职员可以在此基础上高速构建Web服务器。以简练的helloworld.js为例:

var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(80, "127.0.0.1");

地点的代码搭建了一个粗略的http服务器(运行示例布置在http://helloworld.cnodejs.net/中,读者可以访问),在该地监听80端口,对于随意的http请求,服务器都回到一个尾部状态码为200、Content-Type’值为text/plain’的”Hello
World“文字响应。从那个小例子中,大家得以见见几点:

  • Node.js的网络编程比较方便,提供的模块(在此间是http)开放了不难上手的API接口,短短几行代码就足以构建服务器。
  • 显示了事件驱动、异步编程,在createServer函数的参数中指定了一个回调函数(选拔Javascript的匿名函数落成),当有http请求发送过来时,Node.js就会调用该回调函数来处理请求并响应。当然,这些事例相对简单,没有太多的轩然大波注册,在后来的稿子中读者相会到越多的其实例子。

地点的代码搭建了一个简易的http服务器(运行示例安插在
http://helloworld.cnodejs.net/
中,读者可以访问),在地点监听80端口,对于自由的http请求,服务器都回去一个头顶状态码为200、Content-Type’值为text/plain’的”Hello
World“文字响应。从那几个小例子中,大家可以观望几点:

Node.js的特点

上边我们来说说Node.js的风味。事件驱动、异步编程的风味刚才已经详尽说过了,那里不再另行。

Node.js的特性不错。依照开创者RyanDahl的布道,性能是Node.js考虑的首要因素,选用C++和V8而不是Ruby或者其余的虚拟机也是基于性能的目标。Node.js在布署上也是相比大胆,它以单进度、单线程格局运作(很震惊,对啊?那和Javascript的运作方式相同),事件驱动机制是Node.js通过内部单线程高作用地吝惜事件循环队列来达成的,没有十六线程的资源占用和上下文切换,这意味面对周边的http请求,Node.js凭借事件驱动搞定一切,习惯了价值观语言的网络服务开发人士可能对四线程并发和合作极度熟知,不过面对Node.js,我们需求接受和精晓它的性状。由此我们是还是不是可以推断出如此的安排会造成负载的压力集中在CPU(事件循环处理?)而不是内存(还记得Java虚拟机抛出OutOfMemory相当的光景呢?),眼见为实,不释迦牟尼佛探视天猫共享数据平台团队对Node.js的特性测试

  • 物理机配置:RHEL 5.2、CPU 2.2GHz、内存4G
  • Node.js应用场景:MemCache代理,每一遍取100字节数据
  • 连接池大小:50
  • 并发用户数:100
  • 测试结果(socket情势):内存(30M)、QPS(16700)、CPU(95%)

从下边的结果,大家能够阅览在那样的测试场景下,qps可以达到16700次,内存仅占据30M(其中V8堆占用22M),CPU则高达95%,可能变为瓶颈。其它,还有不可胜举实践者对Node.js做了性能分析,总的来说,它的属性令人五体投地,也是受欢迎的严重性原因。既然Node.js接纳单进度、单线程方式,那么在现在多核硬件流行的环境中,单核性能优秀的Node.js如何运用多核CPU呢?创办者赖安Dahl提议,运行多个Node.js进程,利用一些通讯机制来协调各项职责。近来,已经有许多第三方的Node.js多进度帮衬模块发布,专栏后边的稿子会详细讲述Node.js在多核CPU下的编程。

Node.js的另一个特性是它帮助的编程语言是Javascript。关于动态语言和静态语言的利害比较在此间不再展开研讨。只说三点:

var hostRequest = http.request(requestOptions,function(response) {
    var responseHTML ='';
    response.on('data', function (chunk) {
        responseHTML = responseHTML + chunk;
    });
    response.on('end',function(){
        console.log(responseHTML);
        // do something useful
   });
});

在地点的代码中,我们需求在end事件中处理responseHTML变量,由于Javascript的闭包特性,大家可以在四个回调函数之外定义responseHTML变量,然后在data事件对应的回调函数中持续修改其值,并最终在end事件中访问处理。

  1. Javascript作为前端工程师的主力语言,在技术社区中有卓殊的号召力。而且,随着Web技术的穿梭发展,越发是前者的根本伸张,不少前端工程师开首试水”后台应用“,在众多选用Node.js的店铺中,工程师都意味因为习惯了Javascript,所以选拔Node.js。
  2. Javascript的匿名函数和闭包特性相当适合事件驱动、异步编程,从helloworld例子中大家可以看出回调函数接纳了匿名函数的款式来落到实处,很有益于。闭包的效益则更大,看上边的代码示例:
  3. Javascript在动态语言中性能较好,有开发人士对Javacript、Python、Ruby等动态语言做了性能分析,发现Javascript的习性要好于其它语言,再添加V8引擎也是同类的探花,所以Node.js的属性也得益其中。

Node.js的网络编程相比较方便,提供的模块(在此地是http)开放了简单上手的API接口,短短几行代码就可以构建服务器。

Node.js发展简史

二零零六年八月,RyanDahl在博客上发布准备依照V8创造一个轻量级的Web服务器并提供一套库。

二零零六年12月,RyanDahl在GitHub上宣布了早期版本的有的Node.js包,随后多少个月里,有人起先利用Node.js开发使用。

二〇〇九年六月和二〇一〇年3月,两届JSConf大会都配置了Node.js的讲座。

二零一零年年终,Node.js得到云统计服务商乔伊(Joy)ent援救,创办者RyanDahl参加Joyent全职担负Node.js的升高。

二〇一一年二月,Node.js在微软的支撑下宣布Windows版本。

显示了事件驱动、异步编程,在createServer函数的参数中指定了一个回调函数(接纳Javascript的匿名函数达成),当有http请求发送过来时,Node.js就会调用该回调函数来处理请求并响应。当然,这一个事例相对简单,没有太多的风浪注册,在之后的篇章中读者会看到越多的实际例子。

Node.js应用案例

即使如此Node.js诞生刚刚两年多,不过其发展势头渐渐赶超Ruby/Rails,大家在此间列举了一部分集团应用Node.js的案例,听听来自客户的音响。

在应酬网站LinkedIn最新公告的位移采纳中,NodeJS是该运动选取的后台基础。LinkedIn移动支付老总Kiran
Prasad对传媒表示,其所有活动软件平台都由NodeJS构建而成:

LinkedIn内部使用了大气的技艺,不过在运动服务器这一块,大家全然按照Node。

(使用它的缘故)第一,是因为其灵活性。第二,尽管您明白Node,就会意识它最善于的业务是与别的服务通讯。移动应用必须与大家的阳台API和数据库交互。大家尚无做太多数据解析。比较往日运用的Ruby
on
Rails技术,开发团队发现Node在性能方面进步广大。他们在每台物理机上跑了15个虚拟服务器(15个实例),其中4个实例即可处理双倍流量。容量评估基于负载测试的结果。

商家社会化服务网站Yammer则使用Node创制了针对其自己平台的跨域代理服务器,第三方的开发人士可以经过该服务器完结从自身域托管的Javascript代码与Yammer平台API的AJAX通讯。Yammer平台技术经理吉米Patterson对Node的亮点和瑕疵提议了友好的看法

(优点)因为Node是根据事件驱动和无阻塞的,所以非凡适合处理并发请求,因而构建在Node上的代理服务器相比较别的技术已毕(如Ruby)的服务器表现要好得多。别的,与Node代理服务器交互的客户端代码是由javascript语言编写的,因而客户端和劳动器端都用相同种语言编写,那是那些优秀的事情。

(缺点)Node是一个相持新的开源项目,所以不太平静,它连接一向在变,而且缺少丰富多的第三方库援救。看起来,如同Ruby/Rails当年的典范。

妇孺皆知项目托管网站GitHub也尝尝了Node应用。该Node应用名叫NodeLoad,是一个存档下载服务器(每当你下载某个存储分支的tarball或者zip文件时就会用到它)。GitHub往日的存档下载服务器选用Ruby编写。在旧种类中,下载存档的伸手会创制一个Resque义务。该职责实际在存档服务器上运行一个git
archive命令,从某个文件服务器中取出数据。然后,开首的呼吁分配给你一个小型Ruby
Sinatra应用等待该职责。它实际上只是在检讨memcache
flag是不是存在,然后再重定向到最后的下载地址上。旧种类运作大致3个Sinatra实例和3个Resque
worker。GitHub的开发人员觉得那是Node应用的好机遇。Node基于事件驱动,比较Ruby的梗塞模型,Node可以更好地拍卖git存档。在编制新下载服务器进程中,开发人士觉得Node分外适合该意义,其余,他们还里应用了Node库socket.io来监督下载状态。

不但在国外,Node的长处也如出一辙吸引了国内开发人士的专注,淘宝就实在使用了Node技术:

MyFOX
是一个数目处理中间件,负责从一个MySQL集群中领到数额、总结并出口总结结果。用户提交一段SQL语句,MyFOX依据该SQL命令的语义,生成各类数据库分片所急需举办的询问语句,并发送至各样分片,再将结果进行集中和总结。
MyFOX的特点是CPU密集,无文件IO,并只处理只读数据。起初MyFOX使用PHP编写,但碰到不少题材。例如PHP是单线程的,MySQL又须求阻塞查询,由此很难并发请求数据,后来的缓解方案是行使nginx和dirzzle,并基于HTTP协议落到实处接口,并透过curl_multi_get命
令进行呼吁。不过MyFOX项目组最终仍然控制选取Node.js来贯彻MyFOX。

分选Node.js有过多上边的因由,比如考虑了兴趣及社区腾飞,同时也愿意得以增长并发能力,榨干CPU。例如,频仍地开辟和关闭连接会让大气端口处于等候情况,当出现数量上去未来,时常会因为端口不够用(处于TIME_WAIT状态)而导致连日失利。此前反复是经过改动系统设置来压缩等候时间以绕开这些错误,但是使用连接池便得以很好地解决那么些题目。其余,以前MyFOX会在少数缓存失效的情况下冒出非凡凑数的访问压力,使用
Node.js便得以共享查询状态,让某些请求“等待片刻”,以便系统再次填写缓存内容。

Node.js的特点

小结

正文简要介绍了Node.js的基本知识,包涵概念、特点、历史、案例等等。作为一个唯有2岁的阳台,Node.js的发展势头有目共睹,越来越多的商店起头关心并尝试Node.js,前后端开发人士应该通晓有关的始末。

笔者的微信公众号“老崔瞎编”,关心IT趋势,承载前沿、长远、有温度的始末。感兴趣的读者可以搜索ID:laocuixiabian,或者扫描下方二维码加关注。

ca88手机版登录网页 2

下边大家的话说Node.js的特性。事件驱动、异步编程的特色刚才已经详尽说过了,那里不再重复。

参考文献

[1] http://nodejs.org/

[2] http://beakkon.com/geek/node.js/why-node.js-single-thread-event-loop-javascript

[3] http://www.tbdata.org/archives/1285

[4] http://www.infoq.com/interviews/node-ryan-dahl

[5] http://www.infoq.com/cn/news/2011/08/enterprise-nodejs

[6] http://www.infoq.com/cn/news/2010/11/nodejs-joyent

[7] http://www.infoq.com/cn/news/2011/06/node-exe

[8] http://nodenode.com/post/1176414531/node-js-a-short-history

[9] http://www.infoq.com/cn/news/2011/05/nodeparty-hangzhou

【编者按】:本专栏欢迎有志于宣传和松开Node.js的布道师、开发人员和技巧专家投稿,有意者请通过邮件与本专栏主持人崔康(cuikang[at]infoq.com)联系。

Node.js的属性不错。根据开创者RyanDahl的说法,性能是Node.js考虑的主要元素,选取C++和V8而不是Ruby或者其余的虚拟机也是按照性能的指标。Node.js在统筹上也是相比大胆,它以单进度、单线程格局运作(很震惊,对吗?那和Javascript的运转情势相同),事件驱动机制是Node.js通过内部单线程高效用地保险事件循环队列来完结的,没有四线程的资源占用和上下文切换,那意味着面对广大的http请求,Node.js凭借事件驱动搞定所有,习惯了传统语言的网络服务开发人员可能对多线程并发和同盟格外熟谙,然则面对Node.js,大家要求经受和透亮它的特性。由此大家是否可以估计出如此的统筹会造成负载的压力集中在CPU(事件循环处理?)而不是内存(还记得Java虚拟机抛出OutOfMemory很是的光景吧?),眼见为实,不释迦牟尼佛探视天猫共享数据平台团队对Node.js的性质测试:

物理机配置:RHEL 5.2、CPU 2.2GHz、内存4G

Node.js应用场景:MemCache代理,每一次取100字节数据

连接池大小:50

并发用户数:100

测试结果(socket格局):内存(30M)、QPS(16700)、CPU(95%)

从上边的结果,大家得以看来在那样的测试场景下,qps可以达成16700次,内存仅占据30M(其中V8堆占用22M),CPU则达到95%,可能成为瓶颈。其它,还有无数实践者对Node.js做了性能分析,总的来说,它的性能令人信服,也是受欢迎的要紧原由。既然Node.js拔取单进度、单线程形式,那么在明日多核硬件流行的条件中,单核性能卓越的Node.js怎么样运用多核CPU呢?创办者赖安Dahl提出,运行七个Node.js进度,利用某些通讯机制来协调各项任务。近来,已经有不少第三方的Node.js多进程协理模块发表,专栏后边的小说会详细讲述Node.js在多核CPU下的编程。

Node.js的另一个风味是它协助的编程语言是Javascript。关于动态语言和静态语言的利弊比较在那里不再展开探究。只说三点:

var hostRequest = http.request(requestOptions,function(response) {
  var responseHTML ='';
  response.on('data', function (chunk) {
    responseHTML = responseHTML + chunk;
  });
  response.on('end',function(){
    console.log(responseHTML);
    // do something useful
  });
});

在上头的代码中,大家须要在end事件中处理responseHTML变量,由于Javascript的闭包特性,大家可以在八个回调函数之外定义responseHTML变量,然后在data事件对应的回调函数中频频修改其值,并最终在end事件中访问处理。

Javascript作为前端工程师的主力语言,在技术社区中有一定的号召力。而且,随着Web技术的不停进步,尤其是前者的第一增添,不少前端工程师起初试水”后台应用“,在重重施用Node.js的小卖部中,工程师都代表因为习惯了Javascript,所以选取Node.js。

Javascript的匿名函数和闭包特性极度适合事件驱动、异步编程,从helloworld例子中大家可以见到回调函数接纳了匿名函数的款型来促成,很便宜。闭包的法力则更大,看上面的代码示例:

Javascript在动态语言中性能较好,有开发人员对Javacript、Python、Ruby等动态语言做了性能分析,发现Javascript的特性要好于别的语言,再加上V8引擎也是同类的探花,所以Node.js的性能也沾光其中。

Node.js发展简史

二零零六年10月,RyanDahl在博客上表露准备按照V8创制一个轻量级的Web服务器并提供一套库。

二零零六年五月,赖安Dahl在GitHub上发布了早期版本的有的Node.js包,随后多少个月里,有人先河利用Node.js开发使用。

二零零六年10月和二〇一〇年三月,两届JSConf大会都布置了Node.js的讲座。

二〇一〇年年初,Node.js得到云总括服务商Joyent援助,创办者RyanDahl参预乔伊(Joy)ent专职负责Node.js的前进。

二〇一一年四月,Node.js在微软的匡助下公布Windows版本。

Node.js应用案例

固然Node.js诞生刚刚两年多,可是其发展势头逐步赶超Ruby/Rails,大家在此地列举了有的集团应用Node.js的案例,听听来自客户的响动。

在交际网站LinkedIn最新公布的活动接纳中,NodeJS是该运动使用的后台基础。LinkedIn移动支付主管Kiran
Prasad对传媒代表,其所有运动软件平台都由NodeJS构建而成:

LinkedIn内部采纳了汪洋的技术,可是在移动服务器这一块,我们全然根据Node。

(使用它的因由)第一,是因为其灵活性。第二,假设您打探Node,就会发觉它最擅长的工作是与任何服务通讯。移动采纳必须与大家的阳台API和数据库交互。大家从未做太多数据解析。相比较从前运用的Ruby
on
Rails技术,开发公司发现Node在性质方面提升广大。他们在每台物理机上跑了15个虚拟服务器(15个实例),其中4个实例即可处理双倍流量。容量评估基于负载测试的结果。

同盟社社会化服务网站Yammer则使用Node创设了针对其本人平台的跨域代理服务器,第三方的开发人士可以透过该服务器完毕从自身域托管的Javascript代码与Yammer平台API的AJAX通讯。Yammer平台技术主任吉姆Patterson对Node的长处和短处提出了协调的见识:

(优点)因为Node是根据事件驱动和无阻塞的,所以至极适合处理并发请求,由此构建在Node上的代理服务器相比较其他技术落成(如Ruby)的服务器表现要好得多。其余,与Node代理服务器交互的客户端代码是由javascript语言编写的,因而客户端和劳动器端都用平等种语言编写,那是相当精美的业务。

(缺点)Node是一个相对新的开源项目,所以不太平静,它总是一贯在变,而且缺乏充裕多的第三方库接济。看起来,就如Ruby/Rails当年的楷模。

出名项目托管网站GitHub也尝试了Node应用。该Node应用名叫NodeLoad,是一个存档下载服务器(每当你下载某个存储分支的tarball或者zip文件时就会用到它)。GitHub以前的存档下载服务器选择Ruby编写。在旧连串中,下载存档的伏乞会创造一个Resque义务。该义务实际在存档服务器上运行一个git
archive命令,从某个文件服务器中取出数据。然后,初步的请求分配给您一个小型Ruby
Sinatra应用等待该义务。它其实只是在检查memcache
flag是或不是留存,然后再重定向到最后的下载地址上。旧连串运作大概3个Sinatra实例和3个Resque
worker。GitHub的开发人士觉得那是Node应用的好机会。Node基于事件驱动,比较Ruby的堵截模型,Node可以更好地拍卖git存档。在编制新下载服务器进程中,开发职员觉得Node万分适合该意义,其它,他们还里选用了Node库socket.io来监督下载状态。

不光在国外,Node的优点也如出一辙吸引了国内开发人士的注目,天猫商城就实在采取了Node技术:

ca88手机版登录网页,MyFOX
是一个数据处理中间件,负责从一个MySQL集群中领取数额、总计并出口计算结果。用户提交一段SQL语句,MyFOX依照该SQL命令的语义,生成各样数据库分片所急需实施的询问语句,并发送至各种分片,再将结果开展汇总和测算。
MyFOX的特征是CPU密集,无文件IO,并只处理只读数据。起先MyFOX使用PHP编写,但蒙受许多问题。例如PHP是单线程的,MySQL又须要阻塞查询,因此很难并发请求数据,后来的化解方案是行使nginx和dirzzle,并基于HTTP协议落到实处接口,并通过curl_multi_get命
令举行呼吁。不过MyFOX项目组最终仍然控制采纳Node.js来贯彻MyFOX。

分选Node.js有许多上边的因由,比如考虑了兴趣及社区上扬,同时也期望得以增加并发能力,榨干CPU。例如,频仍地开拓和关闭连接会让大气端口处于等候情状,当出现数量上去然后,时常会因为端口不够用(处于TIME_WAIT状态)而导致连日战败。此前反复是经过改动系统装置来减弱等候时间以绕开那些错误,但是使用连接池便可以很好地解决那么些题目。其余,此前MyFOX会在少数缓存失效的情况下冒出尤其凝聚的拜会压力,使用
Node.js便可以共享查询状态,让某些请求“等待片刻”,以便系统再次填写缓存内容。

小结

正文简要介绍了Node.js的基本知识,包蕴概念、特点、历史、案例等等。作为一个单独2岁的平台,Node.js的发展势头有目共睹,越多的店堂开端关注并尝试Node.js,前后端开发人士应该通晓相关的内容。

你或许感兴趣的小说:

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图