关闭

node.js浅谈

249人阅读 评论(0) 收藏 举报
分类:
2008年,我在寻找一个新的编程平台来做网站。我并不是想要一门新的语言,实际上,语言自身的细节对我来说并不重要。我真正关心的是,该语言能否提供先进的推送功能并集成到网站中来,就像我在Gmail中看到的那样——能够从服务器端把数据主动推送给用户,而不是采用不断轮询拉取数据的方式。现有的平台都把服务器作为接受请求然后返回相应内容的设备。要把事件推送到浏览器,平台需要能够持续处理大量打开的网络连接,而这其中有许多连接其实是空闲的。

我知道如何使用系统调用(用C)实现这样的功能。如果只使用非阻塞式socket,每个连接的开销都会非常小。在小规模测试中,我可以演示一台服务器,它能同时处理几千个闲置连接,或实现相当大的吞吐量。我知道这是在Unix服务器上用户空间程序能够实现的最优操作了。但是,我并不想使用C,我需要的是一种漂亮灵活的动态语言。如果需要,我可以在每种编程语言中都用一模一样的系统调用,但这样做异常丑陋,而且这只是socket编程的“替代”方法而已。我认为,非阻塞socket编程并非那么困难,只要一切都做成非阻塞的就可以实现了。

Google在2008年年末推出了Chrome浏览器和崭新的JavaScript引擎V8。这是一个为了更快的Web体验而专门制作的更快的JavaScript引擎,V8让Web应用大大提速了。突然之间,Google、Apple、Mozilla和微软之间的JavaScript军备竞赛就开始了。再加上Doug Crockford的JavaScript: The Good Parts一书的面世,把JavaScript从一门人人轻视的语言一下变成了重要的语言。

于是,我有了个主意:JavaScript结合非阻塞socket!因为JavaScript并没有现成的socket库,所以我可以勇做第一人,来推介这个崭新且大有前途的接口。只要把V8接上我的非阻塞C代码,我就能把它完成。我终止了当时承接的工作,开始全力实现这个想法。当我编写好并发布了最初的版本后,立刻就有用户开始反馈bug,然后我开始不停地处理这些bug,就这样,不知不觉过去了3年。

实践证明,JavaScript与非阻塞socket配合得相当完美。开始我并不敢肯定这一点,但闭包让所有事情变得可能。只需要简单的几行JavaScript代码,就可以构建出非常复杂的非阻塞服务器。我最初还担心,系统会过于小众,但很快我就放心了,因为世界各地的黑客们纷纷开始为其编写程序库。唯一的事件循环队列和纯粹的非阻塞接口让程序库不必增加昂贵的线程,就能添加越来越多的复杂功能。

在Node中,用户会发现系统在默认情况下就能很好地扩展。因为其核心系统做出的选择是,不允许系统中的任何部分做出太坏的事情来(比如堵塞当前线程),所以整体性能也不会太差。如果以能够处理的流量作为计量,Node的方法要比传统的阻塞式操作好上一个数量级。

现在,Node已经在全球被众多公司所使用,包括创业公司、Voxer、Uber,以及沃尔玛、微软这样的知名公司。可以说,每天通过Node处理的请求数以亿计。随着越来越多的人参与到本项目中来,可用的第三方模块和扩展增长迅猛,而且质量也不断提升。虽然我曾建议将Node用于关键任务应用,但现在,即便是要求最苛刻的服务器系统,我也会热诚地推荐使用Node。

本书探讨了Node及许多第三方模块,并给出了指导练习,旨在带你深入浅出地了解Node。通过学习本书,你不但能够熟悉JavaScript的基本操作,还能逐渐开始构建复杂、交互式的网站。如果你曾经使用过其他服务器端Web框架,你会震惊于用Node这么容易就能编写一个服务器!

—Ryan Dahl,Node.js的创建者
0
0
查看评论

浅谈Node.js的工作原理及优缺点

转载地址:http://www.52maomao.info/node-js-working-principle-and-advantages-and-disadvantages.html 编者注:与所有开源项目一样,Node.js将继续向前发展,开发人员将探索可以克服任何限制的新资源和新技术。...
  • kaosini
  • kaosini
  • 2012-10-19 16:39
  • 1813

node.js学习总结

NodeJS介绍 1.概述:       Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google Chrome V8引擎 进行了封装,它主要用于创建快速的、可扩展的网络应用。Node.js采用事件驱动和非阻塞I/O模型...
  • bcbobo21cn
  • bcbobo21cn
  • 2016-04-11 08:44
  • 1966

浅谈人工智能

历史      各个文明中都有杰出的工匠发明了自动机器来代替人类劳动,早在春秋时期鲁班就发明了世界上第一个机器人,可在空中飞翔‘三日不下’;三国时期蜀汉的诸葛亮发明了‘木牛流马’来运送战备物资,称得上是最早的军用机器人;古希腊人希罗发明了世界上第一部蒸汽机......可...
  • oba_gaga
  • oba_gaga
  • 2016-10-09 20:57
  • 4253

Node.JS + MongoDB技术浅谈

看到一个Node.JS + MongoDB的小例子,分享给大家,魔乐科技软件学院(www.mldnjava.cn)的讲座 Node.JS + MongoDB技术讲座          云计算 +大数据 =...
  • i10630226
  • i10630226
  • 2015-06-07 14:51
  • 1295

浅谈node.js RESTful API

REST即表述性状态传递,Representational State Transfer,简称REST,是一种软件架构风格,是一组架构约束条件和原则,满足这些约束条件和原则的应用程序或设计就是RESTful。需要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML以...
  • zhouziyu2011
  • zhouziyu2011
  • 2017-03-31 15:02
  • 341

浅谈 Node.JS (一 基础知识)

未完待续, Node.JS知识, npm知识, node实例讲解, typescript,react,socket.io实例
  • xiaoxiao23333
  • xiaoxiao23333
  • 2017-07-11 23:18
  • 104

浅谈node.js Express框架

REST即表述性状态传递,Representational State Transfer,简称REST,是一种软件架构风格,是一组架构约束条件和原则,满足这些约束条件和原则的应用程序或设计就是RESTful。需要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML以...
  • zhouziyu2011
  • zhouziyu2011
  • 2017-03-31 14:59
  • 303

浅谈node.js和npm

node.js 是运行在服务端的 JavaScript。 node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。 node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。...
  • zhouziyu2011
  • zhouziyu2011
  • 2017-03-31 16:40
  • 405

浅谈node.js单线程模型

Node.js 采用事件驱动和异步 I/O 的方式,实现了一个单线程、高并发的 JavaScript 运行时环境,而单线程就意味着同一时间只能做一件事,那么 Node.js 如何通过单线程来实现高并发和异步 I/O?本文将围绕这个问题来探讨 Node.js 的单线程模型 。 1、高并发策略 一般...
  • wang1472jian1110
  • wang1472jian1110
  • 2018-01-26 10:16
  • 17

小白学《神经网络与深度学习》笔记之一-计算机的潜意识:浅谈神经网络-从神经元到深度学习

转载:http://www.cnblogs.com/subconscious/p/5058741.html 神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向--深度学习的基础。学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术。 本文以一种简...
  • yingwei13mei
  • yingwei13mei
  • 2016-12-15 21:35
  • 518
    个人资料
    • 访问:14016次
    • 积分:715
    • 等级:
    • 排名:千里之外
    • 原创:59篇
    • 转载:3篇
    • 译文:0篇
    • 评论:0条