初步认识Node 之Node为何物
很多人即便是在使用了Node之后也不知道它到底是什么,阅读完本文你应该会有一个初步的、具体的概念了。
提供一种简单的构建可伸缩网络程序的方法。那么,什么是可伸缩网络程序呢?可伸缩性就是通过增加资源使服务器容量产生线性增长的能力。可伸缩应用程序的特点:附加负载只需要增加资源,而不需要对应用程序本身进行大量修改。即我们只需要增加Node服务器的数量,我们可服务对象的数量便能大幅度增长。
注意,可伸缩网络程序的方法,即Node是一种解决问题的方法,那么,下面我们来看看当前存在的问题。
1、当前的问题
当前的服务器程序,每个连接都会生成一个新线程,每个新线程可能需要2MB的配套内存。当用户数量上升到一定程度之后,服务器成本、流量成本和人工成本都会相应的增加。此外,用户的每个请求可能可能会使用到不同的服务器,因此,任何共享资源都必须在所有的服务器之间共享。那么,当前Web应用程序架构(包括流量、处理器和内存速度)瓶颈——服务器能够处理的并发连接的最大数量。
2、解决方法
Node 的解决方法就是更改连接到服务器的方式。每个连接发射一个在Node引擎的进程中运行的事件,而不是为每个连接生成一个新的OS线程(并为其分配一些配套内存)。Node不允许使用锁也不会阻塞I/O调用,因此就没有了死锁这一说法了。
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为何物的更多相关文章
- [Node.js] Node + Redis 实现分布式Session方案
原文地址: http://www.moye.me/?p=565 Session是什么? Session 是面向连接的状态信息,是对 Http 无状态协议的补充. Session 怎么工作? Sessi ...
- cocos2d-x中Node与Node层级架构
Cocos2d-x采用层级(树形)结构管理场景.层.精灵.菜单.文本.地图和粒子系统等节点(Node)对象.一个场景包含了多个层,一个层又包含多个精灵.菜单.文本.地图和粒子系统等对象.层级结构中的节 ...
- 在linux环境下配置node:node + npm + forever
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3574582.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...
- Hadoop ->> Name node/Data node和Job tracker/Task tracker的区别
刚好看到关于Name node/Data node和Job tracker/Task tracker的解释,一开始有点混淆,以为说Job tracker必须运行在Name node上,他们俩有依赖或者 ...
- Cocos2d-x Lua Node与Node层级架构
Cocos2d-x Lua采用层级(树形)结构管理场景.层.精灵.菜单.文本.地图和粒子系统等节点(Node)对象.一个场景包含了多个层,一个层又包含多个精灵.菜单.文本.地图和粒子系统等对象.层级结 ...
- cocos2d-x 3.0 Node与Node层级结构
节点解释: 节点是场景图的基本元素.场景图的基本元素必须是节点对象或者是节点对象的子类. 其中主要可以看到Layer.MenuItem.Scene.Sprite.TMXTiledMap(解析and渲染 ...
- nyoj 263-精 挑 细 选 (sort(P, P+m, cmp); bool cmp(node a, node b)...)
263-精 挑 细 选 内存限制:64MB 时间限制:3000ms 特判: No 通过数:14 提交数:26 难度:1 题目描述: 小王是公司的仓库管理员,一天,他接到了这样一个任务:从仓库中找出一根 ...
- 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 ...
- 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 & 登出终 ...
- 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 ...
随机推荐
- 微软.NET Core RC2正式发布,横跨所有平台
.NET官方博客宣布了<Announcing .NET Core RC2 and .NET Core SDK Preview 1>,正式如期发布了.NET Core RC2, 现在可以放心 ...
- 在线浏览PDF之PDF.JS (附demo)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#skill 下载地址:http://mozilla.gith ...
- Android消息传递之基于RxJava实现一个EventBus - RxBus
前言: 上篇文章学习了Android事件总线管理开源框架EventBus,EventBus的出现大大降低了开发成本以及开发难度,今天我们就利用目前大红大紫的RxJava来实现一下类似EventBus事 ...
- 实现一个类 RequireJS 的模块加载器 (二)
2017 新年好 ! 新年第一天对我来说真是悲伤 ,早上兴冲冲地爬起来背着书包跑去实验室,结果今天大家都休息 .回宿舍的时候发现书包湿了,原来盒子装的牛奶盖子松了,泼了一书包,电脑风扇口和USB口都进 ...
- 使用 Android Studio 检测内存泄漏与解决内存泄漏问题
本文在腾讯技术推文上 修改 发布. http://wetest.qq.com/lab/view/63.html?from=ads_test2_qqtips&sessionUserType=BF ...
- 强强联合,Testin云测&云层天咨众测学院开课了!
Testin&云层天咨众测学院开课了! 共享经济时代,测试如何赶上大潮,利用碎片时间给女票或者自己赚点化妆品钱? 2016年12月13日,Testin联手云层天咨带领大家一起推开众测的大门 ...
- crontab介绍
1.Cron的启动与关闭 由于Cron是Linux的内置服务,可以用以下的方法启动.关闭这个服务: /sbin/service crond start //启动服务/sbin/se ...
- 【Star CCM+实例】开发一个简单的计算流程.md
流程开发在CAE过程中处于非常重要的地位. 主要的作用可能包括: 将一些经过验证的模型隐藏在流程中,提高仿真的可靠性 将流程封装成更友好的界面,降低软件的学习周期 流程开发实际上需要做非常多的工作,尤 ...
- 了解 ARDUINO 101* 平台
原文链接 简介 作为一名物联网 (IoT) 开发人员,您需要根据项目的不同需求,选择最适合的平台来构建应用. 了解不同平台的功能至关重要. 本文第一部分比较了 Arduino 101 平台和 Ardu ...
- Linux学习日记-(一)
一.为什么学习Linux 大学时开始接触Linux,最开始学习的是RedHat(小红帽),感觉Linux好像很久不见的老朋友,用起来很舒服(虽然我们用的是DotNet).很喜欢它的命令模式,让我能接触 ...