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

Uniform in zeromq for realtime purpose

本文关键字:zeromq 用于 实时      更新时间:2023-10-16

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

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

如果我连接一个客户端,消息会延迟(有时会超过250毫秒)。如果我连接100个客户端,很多客户端都会失去一致性(超过750ms,没有一条消息,在大量数据之后)。这对我来说是一个非常关键的问题。

我必须发布到6000多个终端。。。每30ms发布一次,在最坏的情况下(tcp),每个客户端大约有1700字节

也许我应该使用另一种技术来实时传递消息?

正如我在评论中所说,多播是一种方式。最主要的问题是,无论你的终端离你有多远,它们是否可以加入你发布的群组。

你没有说明终端是如何连接到你的网络的(例如,互联网上的vpn,专线等等)你要求一种更好的技术,那就是多播。

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

  • 建立一个负载平衡基础设施,它位于您的服务这意味着你的终端无法连接到你的服务,但连接到一组负载平衡器,然后连接到您的服务例如,如果你有10个,每个只需要处理拥有600个客户。你的问题要小得多——你可以扩大规模方法不要忘记使用异步io
  • 购买更好的硬件-例如solace或tervela do硬件可以扩展到大量并发tcp的消息代理连接-但这并不便宜