初步认识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 ...
随机推荐
- jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧
这篇文章总结的是我在使用resizable插件的过程中,遇到的问题及变通应用的奇思妙想. 一.resizable使用注意事项 以下是我在jsfiddle上写的测试demo:http://jsfiddl ...
- MySQL高级知识- MySQL的架构介绍
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...
- ASP.NET Aries 入门开发教程9:业务表单的开发
前言: 经过前面那么多篇的列表的介绍,终于到了大伙期待的表单开发了. 也是本系列的最后一篇文章了! 1:表单页面的权限设置与继承 对于表单页面,权限的设置有两种: 1:你可以选择添加菜单(设置为不显示 ...
- 结合Jexus + Kestrel 部署 asp.net core 生产环境
ASP.NET Core 是微软的全新的框架.这一框架的目标 ︰ 跨平台 针对云应用优化 解除 System.Web 的依赖. 获得下面三个方面的优势,你可以把它认为是一个C# 版本的NodeJS: ...
- URL安全的Base64编码
Base64编码可用于在HTTP环境下传递较长的标识信息.在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式.此时,采用Base64编码不仅比较简短,同时也具有不可 ...
- Centos 下 mysql root 密码重置
重置mysql密码的方法有很多,官网也提供了很方便的快捷操作办法,可参考资料 resetting permissions .本文重置密码的具体步骤如下: 一.停止MySQL(如果处于运行状态) #se ...
- 用神奇的currentColor制作简洁的颜色动画效果
先上一个兼容性总结图:老版本ie可以直接用复杂方法了,套用某表情包的话: 2016年了,做前端你还考虑兼容IE6?你这简直是自暴自弃! 好了,知道了兼容性,我们可以放心的使用了. 在CSS3中扩展了 ...
- C++ 拷贝构造函数和赋值运算符
本文主要介绍了拷贝构造函数和赋值运算符的区别,以及在什么时候调用拷贝构造函数.什么情况下调用赋值运算符.最后,简单的分析了下深拷贝和浅拷贝的问题. 拷贝构造函数和赋值运算符 在默认情况下(用户没有定义 ...
- Could not evaluate expression
VS15 调试变量不能显示值,提示:Could not evaluate expression 解决办法: 选择"在调试时显示运行以单击编辑器中的按钮"重启VS即可. 可参考:Vi ...
- input type='file'上传控件假样式
采用bootstrap框架样式 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> &l ...