我正在构建一个分布式系统,该系统可能由数百万个客户端组成,这些客户端都需要保持开放(最好是 HTTP)连接以等待来自服务器(在其他地方运行)的命令。消息/命令的负载不会很高,可能是一条消息/秒/1000 个客户端,这意味着它将是 1000 个消息/秒@100 万个客户端。=> 它基本上是关于并发连接的。
要求也很简单。一种方式消息传递(服务器->客户端),每个“通道”只有 1 个客户端。
我在技术方面非常开放(xmpp / websockets / comet / ...)。我使用 Google App Engine 作为服务器,但不幸的是,他们的“渠道”对我不起作用(配额太低且没有 Java 客户端)。XMPP 是一种选择,但非常昂贵。到目前为止,我使用的是 URL Fetch 和 pubnub,但他们刚刚开始为连接收费(大时代)。
所以:
有没有人知道可以以负担得起的方式为我做到这一点的服务?我发现大多数连接都受到限制或高额收费。
有自己实现这种服务器的经验吗?我实际上已经这样做了,它工作得很好(基于 Tomcat 和 NIO),但我还没有时间实际设置一个大型负载测试环境(部分是因为这仍然是一个后备解决方案,我更喜欢一个久经沙场的消息服务器)。您对每 GB 获得多少用户有任何经验吗?有什么硬性限制吗?
我的架构还允许对 msg 服务器进行分段,但我想最大化并发连接,因为 msg 处理 CPU 开销很小。