首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将所有数据推送给延迟订阅的用户?

如何将所有数据推送给延迟订阅的用户?
EN

Stack Overflow用户
提问于 2013-05-04 02:32:15
回答 2查看 1.1K关注 0票数 3

我想知道zmq是否已经解决了以下问题(或者)位于zmq之上的应用程序需要处理它。

1)向所有订阅者发布数据的中央发布者。这些数据本质上是静态的,类似于配置。可以在任何时间点修改数据。

2)多个订阅者订阅来自该发布者的消息。发布者可以在任何时间点加入。

3)如果数据发生变化,发布者应该只将差异发布到现有的订阅者。

4)如果订阅者稍后加入,发布者应将所有数据(当前配置)发布给新订阅者。

Zeromq指南建议遵循以下方法来解决慢Joiner综合征,但这并不能解决上述问题。http://zguide.zeromq.org/page:all#Slow-Subscriber-Detection-Suicidal-Snail-Pattern

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-04 03:10:23

我在你的设置中看到的问题是,它要求所有的订阅者都有相同的状态。如果所有订阅者都是版本7,并且您发布了7- to -8差异,那么它们都会更新到版本8。但这需要在节点之间进行紧密耦合的状态同步。当订阅者不同步时,你会如何处理?

请考虑以下替代设置:

  • “发布者”有一个路由器套接字,它绑定了
  • 每个“订阅者”都有一个连接到路由器的经销商套接字
    • 不能使用请求套接字,因为这会禁止发送“更新提示”(详细信息到follow)

  • 当订阅者i加入网络时,它会向发布者发送"update“请求,以便发布者知道订阅者的身份及其当前版本version[i]
    • 发布者以使订阅者i升级到date

所需的差异进行响应

更新提示如果发布者(即,新版本)上的数据发生更改,它将向所有已知的订阅者发送更新提示。当订阅方接收到“-

  • ”时,它将执行“request

  • (可选)订阅者定期发送"update“请求(不频繁轮询)

这种方法有以下优点:

  • 发布者是服务器;订阅者是客户端
  • 发布者从不发起任何实际数据的发送-它只响应来自客户端的请求(即,“更新提示”不算作发送实际数据)
  • 订阅者都独立地使自己保持最新(最终一致性),即使它们可能不同步intermittently
票数 2
EN

Stack Overflow用户

发布于 2013-05-06 17:52:56

指南中的克隆模式完全符合您的要求。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16365448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档