我正在建立一个项目,其中一个主要问题是如何实现一个简单的消息排队系统(在信使聊天系统的某些方面)。我想避免轮询,但很可能会有很多并发连接(数万)。这些将是HTTP + SSL连接,从应用程序而不是浏览器启动。
我发现的一个解决方案是DNS负载平衡:在一堆nginx网络服务器上分发这些持久连接。
你怎么看?还有其他可能的解决方案吗?答案 0 :(得分:2)
对于负载平衡,保持应用程序服务器无状态将显着打开该字段。一旦你有了这个,你就可以自由地使用几乎任何通用的负载均衡器。从特定协议(如HTTP负载均衡器)到通用TCP级负载均衡器。
保持无国籍状态,相比之下,其余部分将是微不足道的。
答案 1 :(得分:1)
如果您计划使用Web服务(XML消息传递),则可以使用gsoap,它具有包含Web服务器示例应用程序,该应用程序使用线程池。我使用this和mysql运行服务器(用于持久状态)。我赞同Ryan减少/取消申请的有状态。
答案 2 :(得分:0)
DNS负载平衡将允许您在多个IP地址之间分发查询,这些IP地址可能是多个服务器。请记住,您的客户可以从一个请求到另一个请求获得不同的服务器,因此您的应用程序无法使用本地状态管理。您的应用程序必须将其状态存储在集中位置,例如数据库。
答案 3 :(得分:0)
您是否考虑过点对点?穿越防火墙的最先进技术实际上非常有效,特别是因为您在每个实例中运行自己的客户端软件,并且您有服务器来启动连接。
更多工作,但服务器资源显着减少。
此外,编写自己的服务器软件 - 确保它可以处理大量连接并且非常轻量级,并且在进行负载平衡之前,您应该能够在每台服务器上处理数千个连接。
- 亚当
答案 4 :(得分:0)
专为此类消息传递而设计的解决方案是xmpp。它允许您扩展以拥有10000个连接,并使用最小的服务器负载和最少的轮询来回传递消息。
看看以下帖子,选择一个好的xmpp框架供你使用。 What XMPP framework for Java to choose