很多人即便是在使用了Node之后也不知道它到底是什么,阅读完本文你应该会有一个初步的、具体的概念了。

   Node的目标

  提供一种简单的构建可伸缩网络程序的方法。那么,什么是可伸缩网络程序呢?可伸缩性就是通过增加资源使服务器容量产生线性增长的能力。可伸缩应用程序的特点:附加负载只需要增加资源,而不需要对应用程序本身进行大量修改。即我们只需要增加Node服务器的数量,我们可服务对象的数量便能大幅度增长。

  注意,可伸缩网络程序的方法,即Node是一种解决问题的方法,那么,下面我们来看看当前存在的问题。

   Node的作用

  1、当前的问题

  当前的服务器程序,每个连接都会生成一个新线程,每个新线程可能需要2MB的配套内存。当用户数量上升到一定程度之后,服务器成本、流量成本和人工成本都会相应的增加。此外,用户的每个请求可能可能会使用到不同的服务器,因此,任何共享资源都必须在所有的服务器之间共享。那么,当前Web应用程序架构(包括流量、处理器和内存速度)瓶颈——服务器能够处理的并发连接的最大数量。

  2、解决方法

  Node 的解决方法就是更改连接到服务器的方式。每个连接发射一个在Node引擎的进程中运行的事件,而不是为每个连接生成一个新的OS线程(并为其分配一些配套内存)。Node不允许使用锁也不会阻塞I/O调用,因此就没有了死锁这一说法了。

   Node的工作方式

  Node本身运行V8 JavaScript,所以谈其工作方式,嗯,就说说这个V8 JavaScript吧。

  V8 JavaScript引擎是Google用于其Chrome浏览器的底层JavaScript引擎,该引擎有一个巨大的特点便是:您可以下载该引擎并将其嵌入任何 应用程序,它并不仅限于在一个浏览器中运行。V8在运行之前将JavaScript编译成了机器码,而非字节码或是解释执行它,以此提升性能。更进一步,使用了如内联缓存(inline caching)等方法来提高性能。有了这些功能,JavaScript程序与V8引擎的速度媲美二进制编译。因此,这么好的引擎,Node便将其重建为能在服务器上使用就行啦~真是方便完美

  Node作为一个极火的开源项目,每天都会有大量优秀的模块产生,而这些模块大大的丰富了Node这个产品,并会成为其关键的一部分。这么重要的模块,安装它仅需要一个简单的命令——NPM,NPM 视为一种允许轻松扩展 Node 功能的方法,不必担心这会破坏您的 Node 安装。

  NPM即 Node Package Manager,是javascript的一个软件套件管理系统,默认环境为node.js,主要功能就是管理node包,包括:安装、卸载、更新、查看、发布等。

   小结

  到此,您应该对Node有了一个较为清楚的认识了,当然,我的认识是在做了一个小项目过后再来回顾这些内容,脑袋里有了这么一个认知。他使javascript这样一个前台语言,通过使用V8非常棒的就过度到了后台,并且实现它的可伸缩网络程序的目标。当然,作为一个开源的项目,在管理上也会有很多的风波,在2014这一年里,node所经历的也不在少数,详情各大node论坛都应有所涉及,不过,最令人高兴的应该是,Node.JS超越jQuery成为Github上第二受欢迎的开源项目。

ps:本文内容若是有误或者迷糊,还请指正或指出。

初步认识Node 之Node为何物的更多相关文章

  1. [Node.js] Node + Redis 实现分布式Session方案

    原文地址: http://www.moye.me/?p=565 Session是什么? Session 是面向连接的状态信息,是对 Http 无状态协议的补充. Session 怎么工作? Sessi ...

  2. cocos2d-x中Node与Node层级架构

    Cocos2d-x采用层级(树形)结构管理场景.层.精灵.菜单.文本.地图和粒子系统等节点(Node)对象.一个场景包含了多个层,一个层又包含多个精灵.菜单.文本.地图和粒子系统等对象.层级结构中的节 ...

  3. 在linux环境下配置node:node + npm + forever

    我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3574582.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...

  4. Hadoop ->> Name node/Data node和Job tracker/Task tracker的区别

    刚好看到关于Name node/Data node和Job tracker/Task tracker的解释,一开始有点混淆,以为说Job tracker必须运行在Name node上,他们俩有依赖或者 ...

  5. Cocos2d-x Lua Node与Node层级架构

    Cocos2d-x Lua采用层级(树形)结构管理场景.层.精灵.菜单.文本.地图和粒子系统等节点(Node)对象.一个场景包含了多个层,一个层又包含多个精灵.菜单.文本.地图和粒子系统等对象.层级结 ...

  6. cocos2d-x 3.0 Node与Node层级结构

    节点解释: 节点是场景图的基本元素.场景图的基本元素必须是节点对象或者是节点对象的子类. 其中主要可以看到Layer.MenuItem.Scene.Sprite.TMXTiledMap(解析and渲染 ...

  7. nyoj 263-精 挑 细 选 (sort(P, P+m, cmp); bool cmp(node a, node b)...)

    263-精 挑 细 选 内存限制:64MB 时间限制:3000ms 特判: No 通过数:14 提交数:26 难度:1 题目描述: 小王是公司的仓库管理员,一天,他接到了这样一个任务:从仓库中找出一根 ...

  8. node --experimental-modules & node.js ES Modules

    node --experimental-modules & node.js ES Modules how to run esm modules in node.js cli $ node -v ...

  9. nohup /usr/local/node/bin/node /www/im/chat.js >> /usr/local/node/output.log 2>&1 &

    nohup和&后台运行,进程查看及终止   &后台运行 登出ssh终端,进程会被自动kill掉 但是nohup >>XX.log 2>&1 & 登出终 ...

  10. WARN node unsupported "node@v6.11.2" is ......(windows系统更新node版本)

    问题: 使用npm下载文件时报错:WARN node unsupported "node@v6.11.2" is incompatible with electron@^7.1.9 ...

随机推荐

  1. Hangfire项目实践分享

    Hangfire项目实践分享 目录 Hangfire项目实践分享 目录 什么是Hangfire Hangfire基础 基于队列的任务处理(Fire-and-forget jobs) 延迟任务执行(De ...

  2. C语言 · Torry的困惑(基本型)

    问题描述 Torry从小喜爱数学.一天,老师告诉他,像2.3.5.7--这样的数叫做质数.Torry突然想到一个问题,前10.100.1000.10000--个质数的乘积是多少呢?他把这个问题告诉老师 ...

  3. C语言 · Anagrams问题

    问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,"Unclear"和"Nuclear ...

  4. JavaScript Date对象

    本篇主要介绍 Date 日期和时间对象的操作. 目录 1. 介绍:阐述 Date 对象. 2. 构造函数:介绍 Date 对象的构造函数new Date()几种方式. 3. 实例方法:介绍 Date ...

  5. 协议森林16 小美的桌号(DHCP协议)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. DHCP协议用于动态的配置电脑的网络相关参数,如主机的IP地址,路由器出口地址.DNS域名服务器地 ...

  6. Lambda

    Lambda Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可作为参数传递或作为函数调用值返回的本地函数. Lambda 表达式对于编写 LI ...

  7. angular2系列教程(六)两种pipe:函数式编程与面向对象编程

    今天,我们要讲的是angualr2的pipe这个知识点. 例子

  8. angular 源码分析 1 - angularInit()

    angularjs 是个神奇的框架,由于我的好奇,想了解她的内部工作原理,只能一步一步的走进她,靠近她,和她深入的交流. angularjs 的入口是什么样子的呢?一起掀起她的盖头吧. 在这里我只讲方 ...

  9. ZKWeb网页框架1.1正式发布

    发行日志 https://github.com/zkweb-framework/ZKWeb/blob/master/ReleaseNotes/ReleaseNote.1.1.md 主要改动 添加EFC ...

  10. 【干货分享】流程DEMO-合同会审表

    流程名: 合同会审表  业务描述: 合同的审批及签订  流程相关文件: 流程包.xml 事务呈批表业务服务.xml 事务呈批表主数据.xml  流程说明: 1.此流程必须先进行事务呈批表流程的配置才可 ...