0

我们正在寻找一个系统,该系统以相当高的频率(我们的更新将是每秒 1000 次)向多个接收者广播少量频繁变化的数据(使用 JSON 或 XML 或其他东西)。

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

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

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

谢谢!

4

1 回答 1

0

您不想每秒对多个客户端进行数千次 POST。您将在将其推出的一端引入 HTTP 开销,并且就您所知,您最终可能会用刚刚淹没它的 POST 淹没另一端的服务器。

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

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

如果您可以让客户阅读 MQ,请为他们建立一个小组并让您的生活更轻松,因此您只需处理那些不能或不会阅读队列的人,而不是尝试一刀切解决方案。

于 2012-02-08T17:14:47.860 回答