nodejs 适用场景

node.js用来做什么的?提供一个web服务?apache,nginx不可以吗?

请用过node.js开发者讲一下应用的实例,到底哪些地方需要node.js?它解决了我们目前什么问题?它是如何提高我们的效率?

标签: Node.js
我想问同样的问题4个人想要问同样的问题  补充话题说明»
    分享到 
    6
      0 |    0

    按评价排序 | 显示最新答案 | 回页面顶部共有15个答案 我要回答»

    • Railgun
      Railgun 回答于 2012-04-10 11:12

      看看Michael Abernethy的这篇文章:

      Node.js 究竟是什么?

      http://www.ibm.com/developerworks/cn/opensource/os-nodejs/index.html?ca=drs-

      有帮助 (0) |  没帮助 (0) |  评论 (0) |  引用此答案
    • 杨金焕
      杨金焕 回答于 2012-04-10 11:27

      还是不太明白。

      node.js是为了解决“高并发”这样的问题?高并发,所带来的问题是IO?是内存不足?好像不是这么简单吧。

      带宽 + 服务器单位时间内处理请求的能力 + (mysql)数据读取 是不是重中之重。

       

      有帮助 (0) |  没帮助 (0) |  评论 (0) |  引用此答案
    • 杨金焕
      杨金焕 回答于 2012-04-10 11:50
      node.js“事件驱动”,意思node.js不管三七二十一,不断的接受客户的请求,不管这些断请求是否完成。如果是高并发,有大量的wait,这样是不是也属于“阻塞”,不断地把这些请求压入“栈“中而未完成,客户端属于长链接,这不是对服务器造成更高IO?客户端的体验好吗?
      有帮助 (0) |  没帮助 (0) |  评论 (0) |  引用此答案
    • Railgun
      Railgun 回答于 2012-04-10 13:33
      Node 非常适合以下情况:在响应客户端之前,您预计可能有很高的流量,但所需的服务器端逻辑和处理不一定很多。
      我觉得这句是重点
      有帮助 (0) |  没帮助 (0) |  评论 (0) |  引用此答案
    • 木屐证人
      木屐证人 回答于 2012-04-11 13:17
      做网站
      有帮助 (0) |  没帮助 (0) |  评论 (0) |  引用此答案
    • 为爱裸奔
      为爱裸奔 回答于 2012-04-11 13:29

      做网站有JAVA、PHP、.NET、PYTHON等,node.js与他们的优势在哪?

      我没弄明白NODE.JS优势在哪,举个例子,node.js读取HTML模板文件,php也是读取模板文件,这样IO操作频率是持平的。如果是做服务,例如用socket.io做个socket server,PHP也照样能做。

      我也没能明白,NODE.JS能做的,PHP/.NET/JAVA不能做的?不要谈NODE.JS模块,可以用C++给node.js开发模块,照样也可以用c/c#给 PHP/ASP.NET开发底层的东东。

      --- 共有 1 条评论 ---
      • 杨金焕根据node.js的说法:简单的逻辑处理,高并发的请求,才能用node.js。复杂的页面逻辑,不能用node.js. (1年前 by 杨金焕)
      有帮助 (0) |  没帮助 (0) |  评论 (1) |  引用此答案
    • 杨金焕
      杨金焕 回答于 2012-04-11 16:31

      node.js的用途:

      事件驱动:node.js接到一个请求,马上绑定的事件,如request.bind('succ', function(){ print '响应给客户';} );  也就是像ajax的,异步响应客户,只不过这过程发生在服务端。

      高流量且逻辑简单:做print 'hello world'之类的输出吧,可能涉及到数据库的读取输出,都不能用node.js..

      呵呵,像这样的node.js,可能应用有点难推广应用。

      有帮助 (0) |  没帮助 (0) |  评论 (0) |  引用此答案
    • 红星xx
      红星xx 回答于 2012-04-11 16:48

      如 webserver 应用 ,  大量请求 传向 webserver 服务器 ,nginx  ,apache 什么的 也扛不住

      而这时 node.js 的威力 就出来了 ,一台服务器的负载是之前十几倍 ,

      特别适用于 以下场景:

      RESTful API

            提供 RESTful API 的 Web 服务接收几个参数,解析它们,组合一个响应,并返回一个响应(通常是较少的文本)给用户。这是适合 Node 的理想情况,因为您可以构建它来处理数万条连接。它仍然不需要大量逻辑;它本质上只是从某个数据库中查找一些值并将它们组成一个响应。由于响应是少量文本,入站请求也是少量的文本,因此流量不高,一台机器甚至也可以处理最繁忙的公司的 API 需求。

      Twitter 队列

           想像一下像 Twitter 这样的公司,它必须接收 tweets 并将其写入数据库。实际上,每秒几乎有数千条 tweet 达到,数据库不可能及时处理高峰时段所需的写入数量。Node 成为这个问题的解决方案的重要一环。如您所见,Node 能处理数万条入站 tweet。它能快速而又轻松地将它们写入一个内存排队机制(例如 memcached),另一个单独进程可以从那里将它们写入数据库。Node 在这里的角色是迅速收集 tweet,并将这个信息传递给另一个负责写入的进程。想象一下另一种设计(常规 PHP 服务器会自己尝试处理对数据库本身的写入):每个 tweet 都会在写入数据库时导致一个短暂的延迟,因为数据库调用正在阻塞通道。由于数据库延迟,一台这样设计的机器每秒可能只能处理 2000 条入站 tweet。每秒处理 100 万条 tweet 则需要 500 个服务器。相反,Node 能处理每个连接而不会阻塞通道,从而能够捕获尽可能多的 tweets。一个能处理 50,000 条 tweet 的 Node 机器仅需 20 台服务器即可。

      电子游戏统计数据

            如果您在线玩过《使命召唤》这款游戏,当您查看游戏统计数据时,就会立即意识到一个问题:要生成那种级别的统计数据,必须跟踪海量信息。这样,如果有数百万玩家同时在线玩游戏,而且他们处于游戏中的不同位置,那么很快就会生成海量信息。Node 是这种场景的一种很好的解决方案,因为它能采集游戏生成的数据,对数据进行最少的合并,然后对数据进行排队,以便将它们写入数据库。使用整个服务器来跟踪玩家在游戏中发射了多少子弹看起来很愚蠢,如果您使用 Apache 这样的服务器,可能会有一些有用的限制;但相反,如果您专门使用一个服务器来跟踪一个游戏的所有统计数据,就像使用运行 Node 的服务器所做的那样,那看起来似乎是一种明智之举。


      有帮助 (0) |  没帮助 (0) |  评论 (0) |  引用此答案
    • 尹泽西
      尹泽西 回答于 2012-04-26 09:45

      你想知道他为什么好?这么跟你说吧。web服务系统性能上有几个考虑的地方,1连接数。2.后台业务。后台业务包括业务逻辑和数据存储。市面上有很多测试并发连接数的软件不知道你用过没有。像iis和jboss这些东西都有一个并发连接数的上线。他是由于这么web服务器你建立1个连接就开1个进程,每个进程需要基本内存大约是几mb,这样web服务器能开多少连接数不就由web服务器内存决定了。而nodejs就开一个进程,用事件驱动,那就是个转发器,连接器,其他业务逻辑和数据存储那是本地机器的问题。你说性能优化哪里都可以优化是对的。可以优化数据库,可以优化业务逻辑。但是系统瓶颈一般在哪里?就像中国的订票系统似的,在于web服务器,老的web服务器并发连接数是有限的。所以中国订票系统人1多反映就慢,他慢的原因不是后台业务处理和数据库慢,这个那个干订票系统公司的人已经说了,系统慢不是机房里面数据连接的问题。其实他们意思就是web服务器连接数有问题。应该尝试用nodejs。至于RESTful这是一种架构风格,其他软件可有支持,不是它的特定。他的特定是单进程,异步通讯。搞it都懂异步通讯要比同步通讯快很多的道理把。

      --- 共有 1 条评论 ---
      • 乔康007嗯,看了后和我想的一样!! 不过,更深入,我的理解就是在处理高并发时利用事件驱动代替了 线程开启,转移了高并发的瓶颈,js只是事件驱动的一种能够实现! (7个月前 by 乔康007)
      有帮助 (0) |  没帮助 (0) |  评论 (1) |  引用此答案
    • 尹泽西
      尹泽西 回答于 2012-04-26 09:47

      其实事件驱动是为了满足异步通讯设计的,我觉得。

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值