我们希望构建一个高性能、可扩展的 Comet 服务器,并首先考虑将 Java Grizzly 与 GlassFish 结合使用。
但是经过一些研究,我们发现 Node.JS 由于极其简单而迅速成为首选,并声称其性能:
http://news.ycombinator.com/item?id=1088699
http://amix.dk/blog/post/19484
我很高兴听到一些使用这两种方法的真实体验,以及最终可能成为最佳选择的方法。
谢谢!
我们希望构建一个高性能、可扩展的 Comet 服务器,并首先考虑将 Java Grizzly 与 GlassFish 结合使用。
但是经过一些研究,我们发现 Node.JS 由于极其简单而迅速成为首选,并声称其性能:
http://news.ycombinator.com/item?id=1088699
http://amix.dk/blog/post/19484
我很高兴听到一些使用这两种方法的真实体验,以及最终可能成为最佳选择的方法。
谢谢!
如果您进一步阅读同一作者的博客文章,即文章Is node.js best for Comet,他解释了为什么他再次回到基于 Java 的解决方案 (Netty) 并对此感到满意。我想这将是一个有趣的阅读。
我知道这是一个古老且已经回答的问题,但我认为我的经验可能会有所帮助。
我开始了一个小小的宠物项目来测试 Node.js——它的“感觉”以及如何在它上面编程。在这样的生态系统中工作的便利给我留下了深刻的印象:Node.js 代码很容易编写(尽管它的异步范式对于传统程序员来说不是那么简单),库很容易构建等等。甚至 npm 也非常简单:我刚刚发现将您自己的代码作为库提供的最直接的方法是制作它的公共包!
但是,使用 Node.js 的好工具并不多。也许是因为做任何事情都太容易了,所以大多数库都是部分实现的、未记录的解决方案(我也很内疚)。
另外请注意,Node.js 的相关区别不是 JavaScript 语言,而是异步 I/O 模型。这是 Node.js 最有趣的方面,但异步编程风格没有像 Web 开发的常规方式那样经过测试。或许真的是宣传的奇迹——又或许,并没有承诺的那么好。
即使有回报,您是否有足够的开发人员来维护这样一个(至少仍然如此)不寻常的代码库?如果您可以从 Node.js 的异步“生活方式”中获得很多优势,您可以使用更统一的语言和框架,例如Twisted for Python(这是我的首选语言,所以请注意我的意见 :) )。Java也可能有类似的东西。无论如何,我怀疑你现在对这个模型没有太大的兴趣,因为你的问题更多地集中在语言而不是编程范式上,所以 Node.js 无论如何也没有什么可以提供给你的。
所以......不,我现在不会在 Node.js 中开发一些专业的东西,尽管我认为学习它既有趣又有益。
在我看来,在 Node.JS 和 Grizzly 中美化的 Comet 异步方法存在严重缺陷。
在最近的测试(2012 年 8 月)中,Node.js 能够处理来自单个 16GB RAM 服务器的 100 万个单个连接。
http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/