【问题标题】:HTTP push over 100,000 connectionsHTTP 推送超过 100,000 个连接
【发布时间】:2011-07-15 11:14:46
【问题描述】:

我想使用客户端-服务器协议将数据推送到始终保持连接的客户端,24/7。

HTTP 是一个很好的通用客户端-服务器协议。我不认为任何其他协议的语义可能会有很大不同,并且存在许多好的 HTTP 服务器。

关键因素是连接数:应用程序将逐渐扩展到非常大量的客户端,例如 100,000 个。它们不能是服务器,因为它们具有动态 IP 地址并且可能位于防火墙后面。因此,必须建立并保留一个套接字链接,这导致我们进行 HTTP 推送。数据实际上很少被推送到给定的客户端,因此我们也希望尽量减少连接开销。

服务器应通过接受连接、将远程 IP 和端口插入表中并使其空闲来处理此问题。我们不希望运行 100,000 个线程,只希望有这么多的表条目和文件描述符。

有没有什么方法可以使用现成的 HTTP 服务器来实现这一点,而无需在套接字层编写代码?

【问题讨论】:

    标签: http comet push


    【解决方案1】:

    使用推送框架:http://www.pushframework.com。 它是为管理大量长期异步全双工连接的目标而设计的。

    【讨论】:

      【解决方案2】:

      LightStreamer (http://www.lightstreamer.com/) 是专门为 HTTP 的 PUSH 操作而制作的工具。

      应该可以解决这个问题。

      【讨论】:

      • 看起来不错,他们解决了一个更难的问题,但我的应该是一个子集。
      【解决方案3】:

      你也可以看看Jetty + Continuations

      【讨论】:

      • 非常酷!这是广泛部署的吗?有大型装置吗?
      • Jetty 是一种广泛使用的服务器,请参阅此页面上的 jetty powered - jetty.codehaus.org/jetty。 Jetty 现在由 Eclipse 基金会管理,因此得到了不错的支持。也就是说,我认为大多数人使用的 jetty 版本没有延续。
      • 另外,如果可以选择 Google App Engine,您可以查看他们的 Channel API - code.google.com/appengine/docs/java/channel/overview.html
      猜你喜欢
      • 2010-10-28
      • 2017-08-07
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      相关资源
      最近更新 更多