如何在两个集合之间创建发布/订阅模式

发布于 2025-01-18 12:41:20 字数 635 浏览 1 评论 0原文

我在服务器A上有一个文档作为发布者,而服务器B上的另一个文档则是订户。文档的数据结构看起来像这样:

{
  nodeId0: {
    property0: value0,
    property1: value1,
    ...
  },
  nodeId1: {
    property0: value0,
    property1: value1,
    ...
  },
  ...
}

我希望每次使用服务器上的文档更改。然后,服务器B上的文档将遵循相同的方式。因此,我正在尝试为文档创建“版本机制”。并创建一些这样的规则:

  1. 每次更改都会向B发出消息,并且A将增加其版本号。
  2. B不允许更改文档版本。
  3. 由于网络状况的原因,可能会导致B离线B。每10秒钟,B将检查其文档版本是否小于A。如果是原因,则B将尝试找出需要更改文档节点的原因。

所以我的问题是:

  1. 我在做正确的事吗?
  2. 是否有任何图书馆在做同样的事情? (我在服务器B上使用redux.js,a上的node.js server,socket.io进行通信)
  3. 如果我处于正确的方式,那么B检查哪些节点需要更新的方法是什么是最有效的方法当B的版本小于A时?

I have a document on server A as a publisher and another document on server B as a subscriber. The data structure of the document looks like this:

{
  nodeId0: {
    property0: value0,
    property1: value1,
    ...
  },
  nodeId1: {
    property0: value0,
    property1: value1,
    ...
  },
  ...
}

I want every time when the document on server A to change. Then the document on server B will follow the same way. So I am trying to create a "version mechanism" for the document. And create some rules like this:

  1. every time when A changes will emit a message to B. And A will increase its version number.
  2. B is not allowed to change the document version.
  3. In the cause of network condition may cause B offline. Every 10 seconds, the B will check if its document version is less than the A's. If that is the cause, B will try to find out which node of the document needs to be changed.

So my question is:

  1. Am I doing the right thing?
  2. Is there exist any libraries doing the same thing? (I am using redux.js on server B, a node.js server on A, and socket.io for communication)
  3. If I am on the right way, what is the most efficient way for B to check which node needs to be updated when the version of B is less than A?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文