Node.js在企业中到底是如何运用的

Posted 筑梦前端

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js在企业中到底是如何运用的相关的知识,希望对你有一定的参考价值。

Node.js在企业中到底是如何运用的

2009年,Ryan Dahl在GitHub上发布他自己开发的Node.js包。自此,让JavaScript这门语言的重要性不仅仅只停留在浏览器的脚本中了。它让以HTML,CSS,JavaScript为主要技术栈的前端工程师有了一个新的发展方向。


但理想很美好,现实很骨感。学习Node.js的人很多,不管的本身做前端或者做后台的,在学习过程中多多少少会有一定的不适应。前端不适用的是用Node.js基本上是脱离自己平时所习惯的浏览器做开发了,什么IO流,HTTP,阻塞什么的,对于他们来说可能是比较陌生的。而后端人员学Node.js就是语言的不适应了,据了解,JavaScript这门语言在IT人员来说名声是不太的。确实,JS这门语言的类型松散,概念定义模糊,单线程等特点是他们不愿意接受它的原因之一,但是做为W3C的亲儿子,它还是变成了web开发人员不得不学的必修课之一。


那么它到底是有一种什么魔力,让众多科技公司对它都跃跃欲试了。首先,我们得先从它本身得特性说起。在众多对Node.js的介绍中,非阻塞IO,事件驱动是介绍它的时候最常见到的词语。其实它不仅仅是IO流是非阻塞的,所有的请求其实都是非阻塞的,同时用它构建的程序还是单线程的。所以对于服务器资源可以说得到了最大限度得利用,成本自然而然会下降很多,而且在面对高并发状态它的表现简直是完美的。


刀就一定要用到刀刃上,我们用Node.js,就一定要把它的长处给发挥出来。首先它最大的好处是非阻塞IO和异步,所以在高并发处理方面,它的作用就体现出来了。那么哪里会有高并发了?

首先,一个网站的核心是数据。我们浏览网站的目的其实也就是为了查看我们所感兴趣的数据,我们每点击一次感兴趣的内容,后台都会处理查找并发送内容给你,那么在这个过程中,为了处理你这个请求,服务器是需要一个进程去处理。如果同时很多人都在点击这个内容,那么服务器可能会因为资源占有率过大出现宕机的情况,当然我们现在排除网络带宽的情况下。带宽可以负载均衡去搞定,但服务器资源占有就是占有了,这可是没有其他办法去解决的。所以如果一个网站有某些服务可能会出现高并发,大规模请求的情况,那么Node.js的用武之地也就出现了。也就是说,一般我们使用它,处理的大部分都是数据的服务。


比如说我们有一个需求,某个考试成绩公布,预计学生会在成绩发布的某一个时间节点会出现大规模的成绩查询请求,那么这个需求用Node.js去做是非常合适的。学生只要在页面中提供准考证和姓名,把这个信息生成一个key,然后交给Node.js后台去处理,而且因为是单线程,又是异步的,所以它可以同时接受多位学生的请求,并且服务器的资源占有率也不会出现急剧的增长。所有请求都会在异步队列中,只要查询到之后,这个结果将会立即发送到回调中。但因为我们的主页面并不是以Node.js为后台的,所以通过模板引擎渲染是做不到的。而且数据的展示前端是可以轻松完成的,所以我们只要把数据发送过去就可以了,至于别人拿着数据怎么处理和展示,跟Node.js后台的关系就不会太大了。一般来说数据发送格式是常用的XML和JSON两个格式,在Node.js中一般是以JSON居多,以URL形式发布该数据,也称为数据接口。


Node.js在企业中到底是如何运用的


数据是核心,数据也可以称之为资源,那么Node.js所强调的就是资源。实际上这个思想跟REST架构不谋而合。REST即表述性状态传递(英文:Representational State Transfer,简称REST),而RESTfulAPI是这个思想在web下的一种表现形式。实际上它所表达的核心也就资源,也就是说我们每一次请求不是请求一个网页,而是一个资源。那么我们对这个资源的某些动作,比如对于某个数据的增删改查这几个动作不再是通过例如getArticle这样的形式去获取了,而是用HTTP协议写的请求方式去表述这个动作


比如:



这样做,实际上URL的职责就很简单了,也就是单纯的指向某个资源,而HTTP的请求实际就是表示一个动作了,这样就做到资源和动作的分离,那么整个一个开发路线已经功能就变得特别清晰了。而Node.js实现这个过程是很简单的,所以一个在开发一个数据接口得时候,项目得结构也会变得清晰明了,用户在使用的过程中也是很简单的。


当然数据也不可能是完全公开的,所有对于数据服务得做一些现在以及安全措施,OAuth2.0框架可以很好得完成这个工作。包括Google,twitter,腾讯等网络巨头都有基于OAuth2.0的API开发平台,而且各大科技公司都在争先恐后的发布自己的API平台,所以如果你想往Node.js工程师发展,那么这一路也必须继续深入的走下去。





以上是关于Node.js在企业中到底是如何运用的的主要内容,如果未能解决你的问题,请参考以下文章

带你从零学Node.js

Node.js log4j-like 日志系统

使用 javascript (Node.js) 规范化 URL

Node.js Buffer(缓冲区)

[译]How to Install Node.js on Ubuntu 14.04 如何在ubuntu14.04上安装node.js

nvm npm node.js的关系