Node:up and running (Foreword by Ryan Dahl)
发布于 3年前 作者 DoubleSpout 4086 次浏览

本文译自node:up and running序,由node.js之父 Ryan Dahl 编写

前言由瑞安达尔编写

2008年,当时我正在寻找一种新的开发平台来创建网站,这比寻找一个新的开发语言更重要,事实上,我不怎么关心语言的实现细节方面。因此,我关心先进的网站推送技术,就像gmail样,服务器有能力将数据推送给用户,而不是用户不得不重复的去拉取。现有的平台都是和服务器紧耦合的,类似按这样的顺序工作:收到一个请求然后响应。为了将数据推送给浏览器,这个平台需要有能力处理一定数量的打开连接和很多闲置连接。

我知道如何用c语言通过调用系统层让它工作,如果我只使用非阻塞的socket,每个连接的开销都很小。在一个小型的测试中,我演示了一个能够处理成千上万的闲置连接并且有很大吞吐量的服务器。我知道,使用unix服务器是实现的最佳方式。即便如此,我还是不打算使用C语言,我希望用一个具有出色流动性的动态语言来实现。虽然C语言能够发出准确的系统调用,但是我想每一个编程语言都可以做到,而且C语言以非常丑陋和另类的方式来进行socket编程。我的理论是非阻塞socket,这并不难实现,更进一步,我希望每一件事物都是非阻塞的。

在2008年年底,Google宣布发布了Chrome和它的新javascript引擎V8。一个更快的javascript引擎能够让web页面运行更加快速,当然v8做到了。瞬间在google,apple,mozilla和microsoft中存在一种竞争。然后结合了道格·克罗克福德的《javascript语言精粹》一书,瞬间javascript从一门被人轻视的语言成为了一门非常重要和受人关注的语言。

我萌生了一个想法,利用javascript编写非阻塞的socket!因为javascript并没有socket库,所以我可能是第一个推出这个新颖而且富有希望的想法的人。仅仅需要使用V8引擎然后粘合在我的非阻塞C语言代码之上,然后就完成了。我退出了我承包的工作,然后开始没日没夜的做这件事情。一旦我发布了一个可用版本,我想立刻有用户向我提交了错误报告,然后我开始修改这些错误,就这样我渡过了3年。

事实证明javascript能够非常好的处理非阻塞的socket,当然这不是从一开始就知道的。闭包让每一个事物非阻塞成为了可能。用户可以只用寥寥几行javascript代码,就构建出各种各样的复杂的非阻塞服务器。我一开始害怕整个系统可能无法使用,但是当世界各地的黑客为它建立起库之后,我大大缓解了这种想法。单进程事件驱动模型和非阻塞接口可以比处理消耗非常大的线程更有优势,但是整个库会变得更加的复杂。

在Node中,用户找到了一个默认就提供很好扩展的系统。因为做出调度的是核心系统,没有任何东西可以在核心系统中做的太过分(比如阻塞一个线程),因此性能从不会降低多少。这比传统的阻塞式做法提高了一个量级,它更有优势是因为它可以处理大量的并发。

今天,Node开始在全球范围内被大量创业公司和已成立的公司使用。例如Voxer、Uber to Walmart和Microsoft等。保守估计Node每天都会处理几十亿的请求。越来越多的人们参与到这个项目中,可用的第三方模块和扩展在不断的增长并且质量也在不断的提高。虽然我曾经建议让Node担任关键的应用,但是现在我认为Node能够胜任即使是最负载最重的系统节点。

本书作为向导很好的为读者介绍了Node还有很多第三方模块的。在学习本书之前,你必须拥有基本的通过javascript来创建复杂和互动站点的基础。如果你曾经使用过其他服务端框架,你将非常轻松的通过Node来建立一个服务器。

-瑞安达尔,Node.js的创始人

enter image description here

10 回复

最近有本新的 enter image description here

能发这本电子档的吗?[email protected],不胜感谢啊

@snoopy ppurl dot com 你懂的~~

不错!!!

@snoopy 不错,有好书也发我,老吴你懂的

又上传了一本,总共3本新书,都是今年出的,很适用哦,E文的,看不懂只能用google翻译了哦 http://pan.baidu.com/share/link?shareid=68242&uk=1963216441

果断下载来看看》。。。

回到顶部