很多人即便是在使用了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. [ 高并发]Java高并发编程系列第二篇--线程同步

    高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...

  2. Python高手之路【五】python基础之正则表达式

    下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...

  3. console的高级使用

    1.console.table()用来表格化展示数据. var people = { zqz: { name: 'zhaoqize', age: 'guess?' }, wdx: { name: 'w ...

  4. input[tyle="file"]样式修改及上传文件名显示

    默认的上传样式我们总觉得不太好看,根据需求总想改成和上下结构统一的风格…… 实现方法和思路: 1.在input元素外加a超链接标签 2.给a标签设置按钮样式 3.设置input[type='file' ...

  5. JAVA问题集锦Ⅰ

    1.Java的日期添加: import java.util.Date ; date=new date();//取时间 Calendar calendar = new GregorianCalendar ...

  6. bzoj4724--数论

    题目大意: B进制数,每个数字i(i=0,1,...,B-1)有a[i]个.你要用这些数字组成一个最大的B进制数X(不能有前导零,不需要 用完所有数字),使得X是B-1的倍数.q次询问,每次询问X在B ...

  7. enote笔记法使用范例(2)——指针(1)智能指针

    要知道什么是智能指针,首先了解什么称为 “资源分配即初始化” what RAII:RAII—Resource Acquisition Is Initialization,即“资源分配即初始化” 在&l ...

  8. 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.1

    HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...

  9. ABP创建数据库操作步骤

    1 ABP创建数据库操作步骤 1.1 SimpleTaskSystem.Web项目中的Web.config文件修改数据库配置. <add name="Default" pro ...

  10. 【从零开始学BPM,Day1】工作流管理平台架构学习

    [课程主题] 主题:5天,一起从零开始学习BPM [课程形式] 1.为期5天的短任务学习 2.每天观看一个视频,视频学习时间自由安排. [第一天课程] Step 1 软件下载:H3 BPM10.0全开 ...