与“简单”UDP 及其多播实现相比,ZMQ 的性能(我的意思是发送所有消息时的延迟、许多消息到许多接收者的最大扇出率)是多少?
假设,我有一个静态“发送者”,它必须向许多很多“接收者”发送消息。具有简单 TCP 传输的 PUB/SUB 模式似乎非常适合处理此类任务 - ZMQ 无需我们的努力即可完成许多事情,一个 ZMQ-socket 足以处理甚至多个连接。
但是,我担心的是:ZMQ 可以在后台创建许多 TCP 套接字,即使我们没有“看到”这一点。这可能会造成延迟。但是,如果我创建“通用”UDP 套接字并将通过多播传输所有消息 - 将只有一个套接字(多播),所以我认为延迟问题将得到解决。老实说,我想继续使用 TCP 上的 ZMQ 和 PUB/SUB。我的担忧是否有效?
最佳答案
我认为你不能真正以这种方式比较它们。这取决于什么对您来说很重要。
- TCP 提供可靠性,作为发送者,您可以通过设置发送时的阻止/重试选项来选择丢失是否比延迟更重要。
- mcast 可以节省网络带宽,特别是当您的网络有多个网段/路由器时。
zeromq 中的其他选项
- 使用
zmq_proxy
来分割/分担 TCP 连接的负载 - 将 pub/sub 与 pgm/epgm 结合使用,这只是多播之上的一层(我使用这个)
- 使用新的广播天线模式(这样您的订阅选项就会受到限制)
关于sockets - ZMQ 性能与 UDP 多播比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51270731/