ZeroMQ:PUB/SUB 主题订阅便宜吗?

ZeroMQ: are PUB/SUB topic subscriptions cheap?

问题: 我有许多文件通过 HTTP 并行上传(上传接收器)。我将它们暂时存储在本地磁盘上。另一个进程(上传提交者)收到有关新上传的通知并进行特定处理(解析、提取元数据、上传到 S3 等)。上传处理完成后,我希望提交者通知上传接收者将状态(提交是否正常或错误)回复给远程上传者。使用 ZeroMQ PUB/SUB 模式,什么会更好:

初始通知:
关于使用不同的ZeroMQ版本号:

虽然较新的版本可能使用 PUB 侧主题过滤,但早期的 ZeroMQ 版本确实使用 SUB 端方法,这意味着所有(网络)消息传输流量都进入所有 SUB-s 作为分配处理工作负载的可接受惩罚,否则需要以尽可能低的速度处理PUB 端的延迟。

这对于在开放式分布式系统关联中无法强制执行版本同质性的情况很重要。

虽然您的设计架构似乎位于同一 <localhost> 上,但性能影响仍然是非分布式的(集中的),并且如果出现整体瓶颈,可能仅涉及一些有限的 latency/priority 调整在此用例升级期间。


关于可扩展性范围 - 限制仍然比您的用例更远:

正如 Martin Sustrik(ZeroMQ 之父)所详细介绍的那样,ZeroMQ 的设计预期规模可达数万:

(cit.:) " Efficient Subscription Matching
In ZeroMQ, simple tries are used to store and match PUB/SUB subscriptions. The subscription mechanism was intended for up to 10,000 subscriptions where simple trie works well. However, there are users who use as much as 150,000,000 subscriptions. In such cases there's a need for a more efficient data structure. "

Further details on design & scaling might be found interesting in this Martin's post.


最好的下一步是什么?

一个公平的方法是模拟每个有问题的方法并对其进行基准测试,在体外缩放到预期静态比例的 { 1.0x , 1.5x, 2.0x, 5.0x } 以获得定量支持有关与正在审查的替代策略相关的实际开销、性能和延迟的数据。

无论如何,Vovan,享受分布式处理中的智能世界signalling/messaging。