创建 Comet/Push 网络服务器的最佳方式?

Posted

技术标签:

【中文标题】创建 Comet/Push 网络服务器的最佳方式?【英文标题】:Best way to create a Comet/Push webserver? 【发布时间】:2010-03-28 01:19:06 【问题描述】:

我需要创建一个彗星服务器。

我必须使用哪些网络服务器 + 模块?

【问题讨论】:

您需要提供更多信息。什么操作系统?语言?托管限制? 操作系统 Linux。语言和托管无关紧要......我想创建一个简单高效的彗星服务器。在这种情况下,最常用的技术是什么?谢谢^_^ 【参考方案1】: 这是我尝试过的 COMET 解决方案的简短列表,各有优缺点: Python Twisted:基于 Python 的非阻塞服务器。不幸的是,“吃掉”大量 CPU 并且扩展性不是很好; Jetty:非常好,如果您不需要同时为超过 10,000 个客户提供服务。 Jetty 每 10k 活跃用户消耗约 2GB 内存; Apache Tomcat:与 Jetty 相同的问题 - 占用大量内存; Apache Mina:NIO 框架(非阻塞 IO)。没有很好地记录,并且存在缩放问题; JBoss Netty:基于 Apache Mina 的 NIO 框架。文档也很薄弱,但与上述解决方案相比显示出最佳性能。使用 Netty,您一次可以提供约 10 万个连接,消耗数 GB 的内存并使用约 20% 的 CPU(4 核);

所以我强烈建议你看看 Netty。

【讨论】:

【参考方案2】:

请不要对我投反对票,但是您考虑过 nginx 的推送模块吗?

http://pushmodule.slact.net/

【讨论】:

以上是关于创建 Comet/Push 网络服务器的最佳方式?的主要内容,如果未能解决你的问题,请参考以下文章

Django / Comet (Push): 万恶之最?

将实时网络摄像头流式传输到服务器并返回网络的最佳方式是啥?

使用 RPC/编码网络服务的最佳方式?

在 django 中与应用程序服务器/网络服务器进行通信的最佳方式是啥[关闭]

在网络托管包上进行 SVn 结帐/更新的最佳方式

Java NIO系列教程-SocketChannel的最佳实践