深入浅出Node.js读书笔记:Node.js简介(1)

1.1 使用Node.js能解决什么样的问题

先看下现在服务器语言存在什么样的问题,比如Java,Php或ASP.Net等服务端语言,会为每一个客户端连接创建一个线程,而每一个线程需要耗费大约2M的内存。也就是说,理论上,具有8G内存的服务器可以同时连接的最大用户数是4000左右。而要让web应用程序服务更多的用户数,就要增加服务器的数量,而web应用程序的硬件成本也就随之而来。

在技术层面也会存在一些问题,比如说,由于同一个用户的不同客户端请求会被不同的服务器处理,因此在不同的服务器之间要共享
所有的资源。由此可见,一个web应用程序中,一个主要问题是web程序所支持的最大同时用户连接数。

Node.js修改了从客户端到服务器端的连接方式,解决了这个问题。因为它并不会为每个客户端连接创建一个线程,而是为每个客户
端的连接在Node.js内部创建一个事件。因此如果使用Node.js,同时可以处理多达几万个用户的客户端连接。当web服务端应用程序能够支持大量用户的并发连接时,可以考虑使用Node.js。

1.1.1 实现高性能服务器

严格的说,Node.js是一种开发web应用程序的开发工具,在Node.js服务器中,运行的是V8javascript脚本语言,该语言是可以运行在服务器端的脚本语言。

那么什么是V8javascript引擎呢,V8javascript是由谷歌使用c++开发的一种高性能的脚本引擎,它不局限在浏览器中运行,Node.js把它转用到了服务端,并且为它提供了许多附加的各种功能的api。例如在服务器应用中,经常需要处理二进制数据,在Javascript中,只有非常有限的对二进制进行处理的能力,而Node.js所提供buffer类则提供了丰富的对二进制数据的处理能力。

另外V8引擎还使用了一种全新的编译技术,这意味着开发者编写的高端的javascript语言与开发者编写的低端c语言具有相近的执
行效率。这也是Node.js服务器提供的一个重要的特性。

1.1.2 非阻塞IO/事件循环机制

为了实现高性能,Node.js采用了以下两种机制:
*.非阻塞IO
*.事件循环机制

Javascript语言的特征就是它只支持单线程,V8Javascript语言也是如此,所以不需要考虑死锁问题。但与客户端语言不同的是
,Node.js为V8Javascript语言提供了非阻塞的IO机制。例如,当通过搜索获取数据库数据的过程中,在访问数据库之后,得到数据之前,传统的单线程处理机制中,执行了访问数据库的代码后,整个线程都将暂停下来,等待返回数据后才会继续执行。也就是IO操作阻塞了代码的执行,极大地降低了程序的执行效率。由于Node.js采用了非阻塞的IO操作,在执行访问数据库的代码之后会立即转而执行其后面的代码,把数据库返回的处理结果放在回调函数中执行,从而提高了程序的执行效率。

1.1.3 Node.js适合开发的应用程序

那么Node.js适合开发何种应用呢?当客户端需要处理大量并发的输入/输出时,而在向客户端发出响应之前,应用程序内部并不
需要进行非常复杂的处理的时候,我们应该考虑使用Node.js进行该应用程序的开发。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值