是什么让Node.js比Java更快?为什么NodeJS这么快?


发布者 1518409521  发布时间 1400109992367
关键字 技术前沿  Node.JS 

每隔几个星期,就有人发表Java和Node比较的性能评测,像PayPal 或者 Joey Whelan 发表的帖子.作为Node很多公共管理模块核心的维护者和贡献者之一,Strong Loop 很高兴看到Node的获胜。每个人都知道,评测是一个特殊的衡量方式,其实并不适用于所有的情况。有时候Java要快一些,有时候Node要快一些。当然,用什么和怎么衡量才是最重要的。

 

高并发性问题

但是,有一件事我们都认同:为了能适应高并发的情况(成千上万的连接),你的服务器需要采用异步非阻塞模式。你可能已经在IO操作中实现了这种方式。但问题是,如果你的服务器代码的任何部分可能产生阻塞,你都需要开启一个线程。在这种级别的并发下,你不能去为每个连接创建线程。所以整个代码路径都需要异步非阻塞式的, 不仅仅在输入输出层。这就是Node擅长的地方。






尽管Java或Node或其他技术可能赢得一个评测,但到现在为止还没有任何服务器端的语言,实现了像Node.js那样完整的非阻塞生态系统。Node已经实现了超过5W的异步方式的模块了。散落在无数网页的代码示例里,所有的课程和教程都在使用这种异步方式。调试、显示、记录、集群管理、测试框架甚至更多其他更多代码都是你所期待的非阻塞异步模式。


直到Java或另一种语言生态系统能到达支持这种异步模式的程度(在Node中能达到这种水平,是因为JavaScript在浏览器中天生的异步基因), 尽管它原始的非阻塞操作(non-blocking IO)性能可能比node或其他任何评测结果表现的更好;需要大并发的项目会选择Node(并且忍受他的缺点),因为它是完成我们项目的最好方式。

 

大公司, 供应商和社区

我们要帮助让Node和其系统工具和库保持成熟。其他人也在做着同样的事情,从LinkedIn,雅虎与Groupon这样的大用户到像微软,MuleSoft Appcelerator这样的供应商和个人开发者每年贡献成千上万个有用的模块。Node将变得会越来越好,我们会帮助修复缺点或完全消除它们,异步的时代将会带我们进入数以百万计的连接设备的乐土。

 

使用StrongOps 监控node应用程序

准备好开始监视事件循环(Event Loop),管理节点集群(node cluster)并找出内存泄漏了吗?我们可以很容易通过一个简单的npm命令安装,或从你本地,或你最喜欢的云开始使用StrongOps:










回复 (12)
  • #
  • #1 ourjs 1400251301269

    @静夜思

    多谢建议,已经校对,欢迎指出翻译不当的地方。

  • #2 隔心岛 1400204993000
    对高并发处理感兴趣的童鞋可以看这里 https://github.com/kedebug/yohub 基于事件驱动的异步网络编程框架(核心思想在于如何化同步非阻塞为异步非阻塞),在github上面开源。 主要灵感借鉴于林仕鼎先生在百度的某in-house实现。目前拥有不错的并发处理能力,欢迎各位同学关注。
  • #3 小世界 1400205150000
    test
  • #4 小世界 1400205380000
    对高并发处理感兴趣的童鞋可以看这里。 https://github.com/kedebug/yohub 主要灵感启发自 Kylin (百度首席架构师林士鼎先生的baidu in-house作品,用于百度内部异步网络编程)。 核心解决思路在于如何化同步为异步,目前yohub解决了这一点,并且还在持续优化中,欢迎各位童鞋关注或者给出意见。
  • #5 冷眸 1400206399000
    - 0 - 我是多么希望技术文章能用词更准确一点,像这种哗众取宠,或者故意吸引眼球的标题,看到这种标题我只想说: 亲,你也是以后要当编辑的人么? 我建议你将标题改为 Node.js (rest)在响应效率上 比java (rest +soap ) 快。。
  • #6 牵着你的手 1400208079000
    @冷眸

    人家只是翻译一下……
  • #7 静夜思 1400238727000
    绝对是Google翻译的,认真点好不好。
  • #8 邬过冰 1425113559072

    两种语言的性能对比,很快地不知不觉转移到IO模型的对比,有意思吗?

  • #9 邬过冰 1425113604362

    也不能算是两种语言的的对比,应该是两个虚拟机的性能对比!

  • #10 尤观月 1495036499254

    我只想说再好的语言也架不住乱写代码的

  • #11 母江犬 1534230331437

    引用

  • #12 lookatme 1534816554922

    Nodejs确实不错哦,要学的朋友,这里有一系列的视频教程 http://www.sucaihuo.com/video/224-0-0

微信扫码 立即评论