高频广播消息。使用HTTP POST或其他?

时间:2012-02-08 16:57:57

标签: node.js socket.io broadcast broadcasting

我们正在考虑推出一个系统,该系统会以相当高的频率向少数收件人广播少量频繁变化的数据(使用JSON或XML或其他内容)(我们的更新速度为每秒1000次)。

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

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

HTTP POST事情似乎不太正确。我们还应该注意什么呢?这是像node或socket.io或某些新的实时框架这样的东西吗?我们很高兴找到合适的专业知识来帮助解决这个问题,只需要指导正确的方向。

谢谢!

1 个答案:

答案 0 :(得分:0)

您不希望每秒向多个客户端执行数千次POST。你将在你的最后推出HTTP开销,并且据你所知,你可能最终会使用刚刚淹没它的POST淹没服务器的另一端。

选项1:对于不能或不会读取队列的客户端,POSTS可以工作,但是为了避免杀死服务器和所有HTTP开销,你能捆绑更新吗?每隔一两分钟,获取所有汇总数据,然后将其发布到客户端?这样,对于时间和永恒,每分钟或每两分钟就有60个以上的POST请求发送给一个客户端。它还有助于节省带宽,因为您只需使用更多数据发送一次所有标头信息,而不是发送所有标头信息和数据。

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

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

相关问题