订户连接到ZeroMQ PUB / SUB模型中的发布者时发布快照数据

时间:2019-12-25 10:03:38

标签: zeromq distributed-system low-latency

我有一个简单的ZeroMQ PUB/SUB架构,用于将数据从发布者流向订阅者。订阅者建立连接后,发布者开始流式传输数据,但是我想对其进行修改,以便发布者首先发布数据的最新快照,然后再发布流式传输。

我该如何实现?

1 个答案:

答案 0 :(得分:0)

  

Q 我该如何实现这个
   this 是:“ ...正在流式传输数据,但我想对其进行修改,以便发布者先发布数据的最新快照,然后再发布最新快照。开始流式传输。”

解决方案:

实例化一对 PUB -s,第一个称为 aSnapshotPUBLISHER ,第二个称为 aStreamingPUBLISHER 。对于前者,使用 XPUB -原型可以帮助轻松集成一些用于订户基础管理的附加逻辑(具有NTH功能,但有点O / T ATM)。

使用aSnapshotPUBLISHER.setsockopt( ZMQ_CONFLATE, 1 )配置前者,其他设置可能着重于减少延迟并确保所有必需的资源都可用于通过aStreamingPUBLISHER进行的平滑流传输,同时还具有随时可以在其中使用的最新快照。 aSnapshotPUBLISHER(对于任何新手)。

SUB端代理仅遵循此方法,设置了一对工作(.bind()/.connect())链接(到PUB-s或一对{{1} } + XPUB),并且已确认链接正常运行,请停止从PUB获取快照并继续使用,但是(现在已使用BaseID / TimeStamp / FrameMarker或类似对齐的方式)进行了流传输-来自aSnapshotPUBLISHER的数据。

一旦低延迟的经验法则将任何数据打包/压缩成正确的格式,则不支持多帧消息有效载荷的已知aStreamingPUBLISHER模式的局限性就无需考虑麻烦了。大小的BLOB,而不是在网络上移动任何形式的“装饰”但效率低下的数据表示格式。