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

Kris_zcl 发布于 2014/05/15 10:07
阅读 1K+
收藏 5

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

 

高并发性问题

但是,有一件事我们都认同:在高并发性(成千上万的连接)的情况下,你的服务器需要达到异步非阻塞的...。我将用IO来完成那种情况。但问题是,如果你的服务器代码的任何部分阻塞你需要的一个线程。在这种级别的并发下,你不能去为每个连接创建线程。所以整个代码路径需要异步非阻塞式的, 不仅在输入输出层。这就是Node擅长的地方。 




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

直到Java或另一种语言生态系统到达这种支持异步模式的程度(在Node中达到的水平因为浏览器中的异步JavaScript),它不管原始的NIO性能是否比节点或其他任何评测结果表现的更好:需要大并发的项目会选择Node(并且忍受他的缺点),因为它是完成他们项目的最好方式。

 

大公司, 供应商和社区

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

 

使用StrongOps 监控节点应用程序

准备好开始监视事件循环,管理节点集群并找出内存泄漏了吗?我们很容易地用一个简单的npm安装从本地或你最喜欢的云开始StrongOps。



接下来是什么?

在即将到来的版本里有什么?大的性能优化,阅读博客了解更多信息。

看伯Bert Belder的综合视频介绍v0.12所有新添加的特性。

准备用Node.js开发应用程序接口API并让他们连接到您的数据吗?我们已经让这变得很容易,用一个简单的npm安装就可以在本地或你最喜欢的云上开始开发。


转自: http://ourjs.com/detail/5373fba83f2b941e03000008

加载中
0
mallon
mallon
这个不是快不快的问题,而是采用何种调度策略避免时间浪费的问题
0
vmbncm
vmbncm
这不是问题,是新闻!OMG!
0
zoowii
zoowii
说的好像JAVA没有异步一样
zoowii
zoowii
回复 @混世顽童 : try catch, mutlprocess
混世顽童
混世顽童
nodejs写异步程序更简单,其实也有弊端,只要程序崩溃了那nodejs也就崩了
0
最帅站长
最帅站长
就单从底层来说,java是编译过成ir了。而javascript是源代码开跑的。java肯定要更有效率。
0
梅开源
梅开源

引用来自“Mallon”的评论

这个不是快不快的问题,而是采用何种调度策略避免时间浪费的问题

赞同

这也和商业模式有关

像sqlite和nginx那类事情,在java领域一般会有个公司赚翻

0
qinyou
qinyou

node 的 开发体验不好,有点玩闹性质了。

node 的 卖点是 高并发,但总是站在自己的观点上假设其它语言怎么样,然后我这样比它强......

node server 事件循环
其它语言 server 线程池,任务队列

单机机器性能有限,任务队列 和 事件循环 都是面临 一样的问题,多线程下 的 解决方案 还 更成熟。

node 感觉 用成了 程序员的客户端工具 或者 数据接口 转发工具

返回顶部
顶部