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

时间:2012-03-07 23:45:31

标签: java c++ networking replication

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

  • 有N个系统分别生成自己独有的数据
  • 每个系统都需要来自其他每个系统的数据来执行其最终目标
  • 这些系统在不可靠的网络上互相交谈。
  • 预计某些系统会在较长时间内完全无法使用(但他们可能会与某些与网络其他部分有联系的同行联系)

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

我考虑过调查数据库同步框架,但我担心这个问题太过分了。我认为没有任何行冲突的可能性,因为每个系统的数据完全独立于其他系统。

问题是,你知道任何可以帮助解决这个问题的框架吗?或者可能是一种表达这个问题的方法,可以帮助我找到解决方案的路径。

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

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

SymmetricDS.org

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

“SymmetricDS是一个异步数据复制软件包,支持多个订户和双向同步。它使用Web和数据库技术在关系数据库之间复制表,如果需要,几乎实时。该软件旨在扩展为大量数据库,可在低带宽连接上工作,并可承受网络中断期。“ -SymmetricDS.org

Symmetric旨在用作Java库以及独立应用程序。与H2这样的轻量级数据库一起使用,可以避免出现过度杀伤的情况。可任选地运行H2 嵌入在应用程序中,可以将数据存储在内存或磁盘中。

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

您似乎希望为同行通信实施可靠的广播。查看图书馆J.N.提供,如果它不够(或者你想修改它),this book中有一些算法。

检查因果订单广播和总订单广播。

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

答案 4 :(得分:0)

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

使用

由于像DHT和Kadmelia这样的p2p网络是关键值&gt;值数据库,因此还有一些P2P数据库,其中自动添加新节点并且任何节点的故障抵抗力都很强,因为这些网络阻力和可扩展性得到证实< / p>

所以,只需查看您首选的搜索引擎“p2p数据库”和“分布式数据库”,您就会发现很多实现。