在不可靠的网络中,是否有任何框架可以将一个对等体上生成的数据与所有其他对等体同步

Are there any frameworks to synchronize data generated on one peer with all other peers in an unreliable network?

本文关键字:对等 同步 一个 数据 其他 是否 网络 不可靠 任何 框架      更新时间:2023-10-16

我们正在开发一个具有以下需求的系统。

  • 有N个系统,每个系统都生成自己独有的数据
  • 每个系统都需要来自其他系统的数据来实现其最终目标
  • 这些系统在一个不可靠的网络上相互通信
  • 预计一些系统将在很长一段时间内完全不可用(但它们可能与一些与网络其他部分接触的对等体接触)

换句话说,每个系统都需要将其数据复制到N个对等系统。理想情况下,这将以明智的方式进行。

我曾考虑过研究数据库同步框架,但我担心这对这个问题来说太过分了。我认为不存在任何行冲突的可能性,因为每个系统的数据都完全独立于其他系统。

问题是,你知道有什么框架可以帮助解决这个问题吗?或者可能是一种表达这个问题的方式,这可能会帮助我找到解决方案。

最后,理想情况下,这个框架将使用C++(可能还有java)。

SymmetricDS.org

您正在寻找的解决方案听起来很像开源软件SymmetricDS。

"SymmetricDS是一个异步数据复制软件包,支持多个订阅者和双向同步。它使用web和数据库技术在关系数据库之间复制表,如果需要的话,可以近乎实时地复制。该软件设计用于扩展大量数据库,跨低带宽连接工作,并承受长时间的网络中断ge。"
-SymmetricDS.org

Symmetric被设计为用作Java库,以及一个独立的应用程序。与H2这样的轻量级数据库一起使用,可以避免过度使用的情况。H2可选择性运行嵌入在应用程序中,并且可以将数据存储在存储器或磁盘中。

免责声明:我最近开始为JumpMind公司工作,该公司开发该软件。

0mq。它是一个带有C++接口的C框架。它特别支持EPGM(UDP上的可靠多播)和N到N连接。不过,对于您的特殊用例,仍有工作要做。

有趣的问题。您所描述的许多问题特别适用于BitTorrent协议。

您似乎想要为对等通信实现可靠的广播。看看J.N.提供的库,如果它不够(或者你想修改它),这本书中有一些算法。

检查因果顺序广播和总顺序广播。

我在univ的老师确实实现了这样一个库,我会在找到它时更新。

您正在寻找的被称为"分布式数据库",它们甚至在生产系统中也被广泛使用;http://www.project-voldemort.com/例如,linkedin 使用

作为像DHT和Kadmelia ARE这样的p2p网络的键值数据库,也有一些p2p数据库,其中自动添加新节点,并且任何节点的故障抵抗力都很强,因为这些网络抵抗力和可扩展性已经被证明是

所以,只要看看你喜欢的搜索引擎"p2p数据库"answers"分布式数据库",你就会发现很多实现。