毕业设计外文资料翻译--Node.js的范式与基准.docx

上传人:聆听****声音 文档编号:354189 上传时间:2023-04-29 格式:DOCX 页数:15 大小:389.81KB
下载 相关 举报
毕业设计外文资料翻译--Node.js的范式与基准.docx_第1页
第1页 / 共15页
毕业设计外文资料翻译--Node.js的范式与基准.docx_第2页
第2页 / 共15页
毕业设计外文资料翻译--Node.js的范式与基准.docx_第3页
第3页 / 共15页
毕业设计外文资料翻译--Node.js的范式与基准.docx_第4页
第4页 / 共15页
毕业设计外文资料翻译--Node.js的范式与基准.docx_第5页
第5页 / 共15页
毕业设计外文资料翻译--Node.js的范式与基准.docx_第6页
第6页 / 共15页
毕业设计外文资料翻译--Node.js的范式与基准.docx_第7页
第7页 / 共15页
毕业设计外文资料翻译--Node.js的范式与基准.docx_第8页
第8页 / 共15页
毕业设计外文资料翻译--Node.js的范式与基准.docx_第9页
第9页 / 共15页
毕业设计外文资料翻译--Node.js的范式与基准.docx_第10页
第10页 / 共15页
毕业设计外文资料翻译--Node.js的范式与基准.docx_第11页
第11页 / 共15页
毕业设计外文资料翻译--Node.js的范式与基准.docx_第12页
第12页 / 共15页
毕业设计外文资料翻译--Node.js的范式与基准.docx_第13页
第13页 / 共15页
毕业设计外文资料翻译--Node.js的范式与基准.docx_第14页
第14页 / 共15页
毕业设计外文资料翻译--Node.js的范式与基准.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

毕业设计外文资料翻译--Node.js的范式与基准.docx

《毕业设计外文资料翻译--Node.js的范式与基准.docx》由会员分享,可在线阅读,更多相关《毕业设计外文资料翻译--Node.js的范式与基准.docx(15页珍藏版)》请在冰点文库上搜索。

毕业设计外文资料翻译--Node.js的范式与基准.docx

毕业论文(设计)外文资料翻译

学院:

专业班级:

学生姓名:

学号:

指导教师:

外文出处:

书名:

Node.jsParadigmsandBenchmarks

页码:

1-6

作者:

RobertRyanMcCune

附件:

1.外文资料翻译译文;2.外文原文

指导教师评语:

该同学专业术语、词汇翻译的准确度较高,体现了一定的专业英语应用水平。

翻译工作较为认真细致,翻译材料能与原文基本保持一致,能基本正确表达出原文意思,细节处理得当,保持准确。

翻译字、词数满足要求。

翻译材料语句较为通顺,符合中文的表达习惯。

翻译工作能够按照规定,达到考核、提高学生英语应用水平的目的。

签名:

2015年10月14日

1.外文资料翻译译文

Node.js的范式与基准

摘要

现在的web应用环境都应该具备高性能和可扩展性的环境,现有的一些web应用已经实现了线程驱动,实现了事件或两者都有。

但是日益增长的网络运输量需要新的解决方法来改善并发服务。

Node.js是一个新的web框架,它可以通过JavaScript运行在服务器端,是一种事件驱动的I/O型的框架。

本文的研究将会比较多种框架的多个内核的服务请求响应次数。

结果将会证明JavaScript作为一种服务器端语言也能表现很好,而且对非阻塞异步模型具有更高的效率。

1.引言

因特网的持续发展给web应用的设计者带来了大量的挑战。

大量的信息交互需要服务器更好的处理并发的会话。

而且Slashdot效应证明了信息量能快速以几个量级的单位改变。

Web应用必须能够高效处理并发请求。

Lauer和Needham断言,一个巨大的二元计算可以通过线程或消息传递系统建模。

Web应用通过给每个请求建立一个独立的线程来实现并发处理。

相比之下,消息传递或基于事件的系统,利用一个单一的线程来处理事件,如队列中的输入请求。

每一种方法都有其固有的优点和缺点,这取决于具体的实现上。

鉴于广泛的支持和直观的设计,线程是管理web应用并发的较好的方式。

线程在许多平台都是可实现的,这自然得益于其独立的执行流。

然而,由于它本来并不是为了用户级的实现,线性编码显得十分困难。

许多的挑战随着线程而产生,包括同步机制,包括解决方案在成本上的复杂度也激烈增加。

而许多常见的web服务器例如Apache,它的实现线程,最近已开始趋向于研究以事件为基础的模型。

一个以事件驱动的模型也许能够利用一个简单的事件池提供更好的服务,以避免包含多线程的并发范例。

可以注意到,事件通过执行回调函数来避免阻塞,因此只要一个资源正在被使用,就不会停止对它的执行。

事件驱动的I/O凭借着低成本同步,较低的管理费用,更好的策略和逻辑以及大大改善的流控制复杂度而获得支持。

Node.js是最近的一种通过全栈方式实现事件模型的框架。

由RyanDahl于2009年完成开发,Node.js是用C和C++编写的单线程服务端的JavaScript开发环境。

Node的出现使JavaScript在作为一种运行在服务端的表达型、功能型的语言而更加容易,也让它在开发者中越来越火。

Node借助于Google的JavaScriptV8引擎,一种能快速、高效运行JavaScript的引擎,该引擎使得Node表现更加出色。

在接下来的实验中,Node将会与多线程服务器Apache,与EventMachine以及事件型Ruby语言的web服务器作比较,以此评估当前网络环境下实际web框架在面对挑战时的表现。

2.相关工作

自从2009发布,Node仍然只是beta测试发布版,目前也缺少同行评测的文献。

开发社区虽然已经发布了几个关于能否在网络上支持事件的实验,但是Node仍然缺乏定义性的评测。

与尖端框架相比,线程与事件之间的争论由来已久。

有关基于事件结构的需求在近些年已经被确定,与此同时,近年来的服务器应用中,以线程为基础的并发研究保持着持续的活跃状态。

不管是线程还是事件驱动,他们始终都在向前发展。

Apache引入有数量限制的线程池,确定线程数的上限是为了限制资源的分配。

另外,事件驱动的并发已经被细化,其中包括事件队列对代码的简化,和事件队列对代码的模块化。

最近,来自UC伯克利的研究人员发现了SEDA的混合算法,利用线程和事件创建一个混合的分期组件来模块化网络体系结构。

这一发现在处理庞大数据方面表现很好,但也为系统带来了很多复杂的问题。

同样值得注意的是,SEDA在当前试验中并不适用。

3.方法论

实验的目的在于检测Node.js,EventMachine和Apache服务器在并发等级和总的请求等级上的表现。

EventMachine是一个为Ruby编程语言提供的事件驱动I/O的库。

Ruby是开发于90年代中期的编程语言。

RubyonRails是流行用于一些应用的web框架,这些应用中包括Twitter,但已被证实缺乏可扩展性。

实验将会测试每个框架处理不同的服务请求时的表现。

测试环境包括一台OSX10.6.8的iMac电脑,带有8G的内存和3.06GHz的IntelCore2双核处理器,虚拟机环境在VMWareFusion4.0.2上搭建,运行Ubuntu11.10版本的系统,并分配有2G的内存。

一个双核处理器可用的内核数量是可变的。

除了虚拟化更多硬件,软件允许获取机器的快照,允许机器本身的能量节约。

Ubuntu的智能软件包管理工具被用于安装测试环境,来保证其简单性和一致性。

Apache装在最新的Ubuntu系统中,其他所有的软件通过智能软件安装包安装,除了Node。

Node使用一个流行的脚本来安装和配置。

Node的安装方法也许会帮助它的表现超过一些预编译的程序。

但这不会再这次研究中被考虑。

主要的安装包括Node0.4.12,EventMachine0.12.10,Ruby1.8.7和Apache2.2.20。

下面是将运行在Node.js的服务器端代码的例子。

varhttp=require(’http’);

http.createServer(function(req,res){

res.writeHead(200,\

{’Content-Type’:

’text/plain’});

res.end(’HellowWorld\n’);})\

.listen(8080,"127.0.0.1");

console.log(’Serverlocalhost8080’);

实验将每个框架的web服务器都运行在本地,服务器上运行一个简单的程序。

ApacheBench命令行工具被用来记录每个web服务器信息。

在这些实验中,ApacheBench一组配置信息,以及所有的服务器请求数量和并发请求数量被设置为变量。

底下是一个命令样式,该例子记录了一个运行在本地80端口,总量为10000请求和1000并发量的请求代码。

ab-n10000-c1000http:

//localhost/

通过以上执行,每一次并发请求变成一个打开的文件,所以以上运行结果会有10个文件同时被打开。

为安全考虑,Ubuntu默认只允许同时打开1024个文件,为了测试更多数量的并发请求,这个安全限制必须提高。

但需要逐步更改,为提高限制数量,需要找到/etc/security/该目录下的limits.conf文件,并添加以下代码。

[user]hardnofile500000

这句命令为用户实行一个强制性的、不可用蛮力改变的限制。

额外的配置可以到/etc/此目录下的sysctl.conf中设置,通过以下编码。

fs.file-max=500000

在重新启动机器登录至系统后,对限制的设定能成功的用来改变打开文件数量的最大值。

ulimit-n120000

在这一系列实验中,每个框架都在不同幅度的总请求上被测试,幅度大概在1000到1000000之间。

相比之下,并发请求数在模拟web环境中则显得更为重要,所以,测试的并发请求数量下降到更加精细的范围,大概为100,500,1000,5000和10000的并发请求数量。

该试验机包含一个双核处理器,而每次测试运行都使用1个或者2个核,具体决定于如何适应虚拟机的配置。

每个实验的单次运行都是为了提供一个准确的行为写照,即使在未来额外的运行状况会发生,实验还会提高准确度。

一个成功的框架会响应所有的请求,会在当前的网络环境下强调并发请求,会为次要目标争取一个更快的请求时间,并且有更微小的最大值、更严格的标准偏差。

4.结果分析

结果如图1到6所示,每个框架请求次数的标准偏差、中位数和最大值都会随着改变并发请求,总请求数和核数而改变。

图7-9显示在较少请求的情况下每个框架的请求次数分布,结果所有测试的框架都完成了相似的请求次数,所以他们的曲线也是十分相似。

这些分布表明大多数时候运行时间都在一个有边界的小范围内,只有大概5%的运行时间内表现得十分的频繁。

考虑到一个自定义的web应用也许能更好的处理大量的请求次数,每次试验的平均运行时间也许是发挥服务器性能的精准变量。

在执行完所有实验后,Node显然比其他两个框架有更好的表现,在较低水平下的并发情况下,平均的请求次数也相对的有竞争力,但最大的区别在于观察到的压力的增加。

Node是唯一一个在处理高并发和所有并发两个方面都有很好表现的框架。

图7

图8

图9

A.Node

得出这样结果的原因可能是独特的环境有利于Node的事件驱动。

服务器应用的简单性和传输小数据的特性,也有利于类似于Node的无状态的实现。

B.EventMachine和事件驱动模型

然而,基于Node的实验结果好于EventMachine的原因得益于高性能JavaScriptV8引擎的支持,以及Node的自底向上的事件驱动。

Node和所有的JavaScript库都是由事件驱动的,而EventMachine的异步I/O的实现仍然是基于线程库的。

EventMachine和Node都是基于事件的并发。

Node具备更深入的实现和更快速的编程语言。

尽管如此,在高负荷状态下,建议所有基于事件的框架都使用事件驱动I/O来更好的适应现在的网络发展。

C.Apache

在网络传输量较低的情况下,Apache使用这两种框架的表现并不理想。

线程能更好的处理数据密集型的web应用,对更为复杂的应用的标杆管理会发现Apache能提供更好的服务。

随着处理器的额外增加,Apache也有了些许的改善。

重新配置默认的线程限制可以提高性能,鉴于增加线程比增加相等数目事件消耗更多的内存。

5.结论

本文实验目的是对比另一种事件驱动框架EventMachine评估Node对事件驱动I/O模型的实现情况。

同时还会将他与运行在Apache服务器上的传统的线程驱动模型作比较。

在一种强调高并发和低数据吞吐量的的模拟web环境下,Node比EventMachine、Apache有着更好的表现。

通过变化核数可以发现,即使到后来请求次数毫无悬念的增加了,每次实验的结论还是一致的。

在低水平的并发请求和总请求情况下,进程是相对可以比较的。

只有Node可以在更高的幅度负载。

EventMachine表现也很好,尽管存在一些不一致性,相比之下,Apache表现较差。

随着日益改善的线程配置,在以后的测试中,Apache或许能表现的更好。

6.未来展望

更多更有效的任务可以用来评估Node.js。

如本文中,基准实验可以重复更多次的运行来获取更准确的结果和推测。

另外,设置不同的钩子并将他们加入到虚拟器中,主要目的是为了获取一个更加清楚的Node框架以及其他框架内部运行的图片。

不同服务器过程中更多的数据可以阐明Node实现过程中哪一个元素对负载有缓冲作用。

可以用更多的功能模块来阐述服务器应用程序,如数据库后端,甚至是一个移动设备,这些能更好地模拟当前环境。

配置Apache可以更恰当地处理增加的并发请求。

虽然在这些实验中,Node的表现优于竞争对手,但仍然有进一步的工作可以提供一个更清晰的结果,来表述Node的优势和劣势。

2.外文原文

Node.jsParadigmsandBenchmarks

Abstract—Thecurrentenvironmentofwebapplicationsdemandsperformanceandscalability.Severalpreviousapproacheshaveimplementedthreading,events,orboth,butincreasingtrafficrequiresnewsolutionsforimprovedconcurrentservice.Node.jsisanewwebframeworkthatachievesboththroughserver-sideJavaScriptandeventdrivenI/O.Testswillbeperformedagainsttwocomparableframeworksthatcompareservicerequesttimesoveranumberofcores.TheresultswilldemonstratetheperformanceofJavaScriptasaserver-sidelanguageandtheefficiencyofthenon-blockingasynchronousmodel.

INTRODUCTION

TheInternetiscontinuallyevolvingandpresentsanumberchallengestowebapplicationdesigners[1].Hightrafficdemandsservicestobetterhandleconcurrentsessions[2].Moreover,the”SlashdotEffect”demonstrateshowrapidlytrafficcanchangebyseveralordersofmagnitude[3].Webapplicationsmustbeabletoefficientlyserveconcurrentrequests.

LauerandNeedhamassertabroaddualityforcomputing,arguingthatprocessingmaybemodeledbyeitherthreadingormessage-passingsystems[4].Webapplicationsservingconcurrentrequestsimplementthreadingbyassigningeachincomingrequesttoaseparatethreadofexecution.Incontrast,message-passing,orevent-basedsystems,utilizeasinglethreadtoprocessevents,suchasincomingrequests,fromaqueue.Eachapproachhasinherentadvantagesanddrawbacksdependingontheimplementation.

Threadingisanobvioussolutionformanagingwebapplicationconcurrency,consideringwidesupportandintuitivedesign.Threadingisavailableonmanyplatformsandnaturallyabstractstoindependentstreamsofexecution.However,threadprogrammingcanbeexceedinglydifficultandwasnotoriginallyintendedforuser-levelimplementation[5].Anumberofchallengesarisewiththreading,includingsynchronization,wheresolutionsaddconsiderablecomplexityatdrasticcost.WhilemanycommonwebserverslikeApacheimplementthreading[3],recentapproacheshavebegunutilizingtheevent-basedmodel.

Anevent-basedmodelmayprovidebetterperformancebyutilizingasingleeventloop,avoidingtheconcurrencyparadigmthatmultithreadingembraces.Notably,eventingachievesnon-blockingthroughissuingcallbacks,soexecutiondoesn’tstopwhenaresourceisalreadyinuse.Evented-I/Ohasgainedsupportbecauseofinexpensivesynchronization,loweroverheadforstatemanagement,betterschedulingandlocality,andimprovedflexibilityinflowcontrol[6].

Node.jsisonerecentframeworktoimplementtheeventmodelthroughtheentirestack.Developedin2009byRyanDahl,Node.js(orjustNode)isasingle-threadedserver-sideJavaScriptenvironmentimplementedinCandC++[7].Nodesarchitecturemakesiteasytouseasanexpressive,functionallanguageforserver-sideprogrammingthat’spopularamongdevelopers[7].NodeutilizestheJavaScriptV8engine,developedbyGoogle[9],afastandpowerfulimplementationofJavaScript[8]thathelpsNodeachievetopperformance.

Inthefollowingexperiments,NodewillbecomparedtoApache,amultithreadedwebserver,andEventMachine,aneventedRubywebserver,toevaluatepracticalwebframeworksforthechallengesposedbythecurrentweb.

RELATEDWORK

Havingbeenreleasedin2009,Nodeisstillbetareleaseandcurrentlylacksmuchpeer-reviewedliterature.Thedevelopmentcommunityhaspostedseveralexperimentsonthewebthatsupporttheeventedapproach[10,11,12],butNodestilllacksadefinitiveevaluation.

Incontrastwithcutting-edgeframeworks,thedebatebetweenthreadingandeventshasalong,establishedhistory.Theneedforevent-basedarchitectureshasbeenidentifiedinrecentyears[5,13,14]whilethread-basedconcurrencyremainsprevalentinrecentserverapplications[15,16].

Boththreadandeventapproacheshavegraduallyevolved.Apacheutilizesboundedthreadpools,wherethenumberofopenthreadsiscappedinordertolimitresourceallocation[3].Moreover,event-drivenconcurrencyhasbeenrefined,includingtheeventqueuetosimplifyprocessingandmodularizecode[3].

Morerecently,researchersoutofUCBerkeleydiscoveredahybridapproachinSEDA,thatutilizesboththreadsandeventstocreateahybridstagingcomponenttomodularizewebarchitectures[3].Theapproachperformswellforhighvolumebutaddsconsiderablecomplexitytoasystem.Whileimportant,SEDAisnotapplicabletocurrentexperiments.

METHODOLOGY

ExperimentsaimtotestNode,EventMachine,andApacheserverswithincreasinglevelsofconcurrentandtotalrequests.

EventMachineisalibrarythatprovidesforeventdriveI/Ofor

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2