2012-02-08 98 views
0

我们正在研究一个系统,它能够以相当高的频率(我们的更新速度为每秒1000次)向多个接收者广播少量频繁变化的数据(使用JSON或XML或其他)。高频广播消息。使用HTTP POST或其他东西?

我们最初是想使用HTTP POST广播数据到每个端点,也许每隔几秒钟一次(因为他们是别人的webapps客户会有所不同),但我们现在想知道是否有更好的方法以保持我们希望的负载/频率。我想我们至少需要以某种方式对消息进行版本/时间戳。

我们正在使用RabbitMQ准备好所有准备发送的内容,并选择需要去哪里(从Django应用程序,如果有的话),但我们无法让所有端点都使用MQ 。

HTTP POST的东西看起来不太正确。我们还应该寻找什么?这是像node还是socket.io或一些新的实时框架适合的地方吗?我们很高兴找到合适的专业人员来帮助解决这个问题,只需要指导正确的方向。

谢谢!

+0

您对服务器和客户端的首选编程语言是什么?看起来像你可以使用Java和Netty来创建原型。另外,您可以选择最先进的技术并使用“WebSockets”,而不是“HTTP POST”。 – djangofan 2012-02-08 17:25:15

回答

0

您不希望每秒向多个客户端执行数千个POST。您将在您的最终目标中引入HTTP开销,而对于您所知道的一切,您最终可能会用另一端的服务器淹没,而这些POST只是淹没了它。选项1:对于不能或不会读取队列的客户端,POSTS可以工作,但为了避免杀死服务器和所有HTTP开销,您可以捆绑更新吗?每隔一两分钟一次,将所有汇总数据提交给客户端?通过这种方式,您无需每隔一两分钟向一个客户端发送60多个POST请求,无论是时间还是永久。它还可以帮助节省带宽,因为你只用一次数据发送所有的标题信息,而不是发送所有的标题信息和数据。

选项2:你有没有想过使用一个好的'套接字连接?要么你打开一个套接字到客户端,反之亦然,并通过这个数据推送?这样可以避免HTTP的开销,并让客户端以数据到达的速率读取数据。如果客户不再想要接收数据,他们可以关闭连接。它在神秘的一面,但它会避免完全杀死目标服务器。

如果您可以让客户读取MQ,为他们设置一个组并让您的生活更轻松,那么您只需处理那些不能或不会读取队列的人,而不是尝试适合所有解决方案。