Node.js的介绍

一、简介

它是一种通过JavaScript语言开发web服务端的东西,能够使得javascript脱离浏览器运行。至于为什么要用Node.js,是因为它有非阻塞、事件驱动I/O等特性,从而让高并发在的轮询(Polling)和comet构建的应用中成为可能。

二、大致发展

传统情况下,浏览器给网站发了请求,服务器收到请求后,然后开始搜寻被请求的资源。如果有需要,服务器还会查询一下数据库,最后把响应结果传回浏览器。

1.传统的web服务器(比如Apache),每一个请求都会让服务器创建一个新的进程来处理这个请求。

2.Ajax,不用每次都请求一个完整的新页面,每次只请求需要的部分页面信息就可以了。比如你要建一个FriendFeed这样的社交网站(类似人人网那样的刷朋友新鲜事的网站),你的好友会随时的推送新的状态,然后你的新鲜事会实时自动刷新。要达成这个需求,我们需要让用户一直与服务器保持一个有效连接。目前最简单的实现方法,就是让用户和服务器之间保持长轮询(long polling)。

3.HTTP请求,它不是连续的连接,你请求一次,服务器响应一次,然后就完了。长轮询是一种利用HTTP模拟持续连接的技巧。

具体说,只要页面载入了,不管你需不需要服务器给你响应信息,你都会给服务器发一个Ajax请求。这个请求不同于一般的Ajax请求,服务器不会直接给你返回信息,而是它要等着,直到服务器觉得该给你发信息了,它才会响应。同时当你的浏览器接收到消息后就会再次给服务器发送一个请求,服务器接收到请求后,不会被立即响应。以此往复。

比如,你的好友发了一条新鲜事,服务器就会把这个新鲜事当做响应发给你的浏览器,然后你的浏览器就刷新页面了。浏览器收到响应刷新完之后,再发送一条新的请求给服务器,这个请求依然不会立即被响应。于是就开始重复以上步骤。利用这个方法,可以让浏览器始终保持等待响应的状态。

4.容易出现大量闲置的进程,造成内存资源的极大浪费。每次一个新用户连到你的网站上,你的服务器就得开一个连接。每个连接都需要占一个进程,这些进程大部分时间都是闲着的(比如等着你好友发新鲜事,等好友发完才给用户响应信息。或者等着数据库返回查询结果什么的)。虽然这些进程闲着,但是照样占用内存。这意味着,如果用户连接数的增长到一定规模,你服务器没准就要耗光内存直接瘫了。

5.解决上述问题的方法就是非阻塞和事件驱动。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值