针对Comet应用程序的Node.js与Java

时间:2010-12-20 10:10:42

标签: java node.js comet grizzly

我们希望构建一个高性能,可扩展的Comet服务器,并首先考虑将Java Grizzly与GlassFish一起使用。

但经过一些研究,我们发现Node.JS由于极端简单而迅速成为首选,并声称性能:

http://news.ycombinator.com/item?id=1088699

http://amix.dk/blog/post/19484

我很高兴听到一些使用这两者的真实体验,以及最终可能成为最佳选择。

谢谢!

4 个答案:

答案 0 :(得分:13)

如果您想进一步阅读同一作者的帖子,即帖子Is node.js best for Comet,他解释了为什么他再次回到基于Java的解决方案(Netty)并对此感到满意。我猜这将是一个有趣的阅读。

答案 1 :(得分:5)

我知道这是一个陈旧且已经回答过的问题,但我认为我的经历会有所帮助。

我开始了一个小宠物项目来测试Node.js - 它的“感觉”以及如何编程。在这样的生态系统中工作的难易程度给我留下了深刻的印象:Node.js代码很容易编写(虽然它的异步范例对于传统的程序员来说并不那么简单),库很容易构建等等。甚至npm也非常简单:我刚刚找到了提供自己的代码作为库的最直接的方法是制作它的公共包!

然而,使用Node.js的工具并不多。也许是因为很容易做任何事情,大多数库是部分实现的,未记录的解决方案(和I am guilty too)。

另外,请注意Node.js的相关区别不是JavaScript语言,而是异步I / O模型。这是Node.js最有趣的方面,但异步编程风格并没有像传统的Web开发方式那样经过良好测试。也许它真的是被宣传的奇迹 - 或许它不如承诺的那么好。

即使在它获得回报的情况下,您是否有足够的开发人员来维护这样一个(至少仍然是)不寻常的代码库?如果您可以从Node.js的异步“生活方式”中获得很多优势,那么您可以使用更多的整合语言和框架,例如Python的Twisted(这是我的首选语言,所以请注意我的看法 :) )。 Java也可能有这样的东西。无论如何,我怀疑你现在对这个模型没什么兴趣,因为你的问题更多地关注语言而不是编程范例,所以无论如何Node.js都没有太多东西给你提供。

所以......不,我现在不会在Node.js中开发一些专业的东西,虽然我觉得它既有趣又有教育意义。

答案 2 :(得分:3)

在我看来,在Node.JS和Grizzly中使用Comet的异步方法是deeply flawed

答案 3 :(得分:2)

在最近的测试中(2012年8月),Node.js能够处理来自单个16GB RAM服务器的100万个单连接。

http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/