用于实时目的的zeromq中的统一

时间:2015-11-20 00:33:59

标签: java c++ c tcp zeromq

我需要实时实现服务器和终端的分析系统。

我使用库ZeroMq(pub | sub模式)向客户端发送消息(~40bytes)。

如果我连接1个客户端,则消息会有延迟(有时超过250毫秒)。 如果我与100个客户端连接,很多客户端会失去交付的一致性(超过750毫秒没有一条消息,在那么大的数据范围之后)。这对我来说是至关重要的问题。

我必须发布超过6000个终端... 每30ms发布一次,在最坏的情况下(tcp),每个客户端约为1700字节

也许我应该使用其他技术实时传递消息?

1 个答案:

答案 0 :(得分:1)

正如我在评论中所说,多播就是这样。最重要的问题是您的终端是否可以加入您正在发布的群组 - 无论他们离您有多远。

您没有说明终端如何连接到您的网络 - (例如通过互联网连接vpn,私有线等等。)您要求更好的技术 - 它是多播。

现在有一些选择,如果你要沿着tcp路线走下去:

  • 构建一个位于您前面的负载开发基础架构 服务。这意味着您的终端无法连接到您的终端 服务,但到一组负载平衡器,然后连接到您的 服务。例如,如果您有10个,则每个只需处理 有600个客户。你的问题要小得多 - 你可以扩展它 办法。不要忘记使用异步io。
  • 购买更好的硬件 - 例如安慰或tervela做硬件 消息代理可以扩展到非常大的并发tcp数 连接 - 但这并不便宜。