我们正在开发一个具有以下要求的系统。
换句话说,每个系统都需要将其数据复制到N个对等系统。理想情况下,这将以智能方式完成。
我考虑过调查数据库同步框架,但我担心这个问题太过分了。我认为没有任何行冲突的可能性,因为每个系统的数据完全独立于其他系统。
问题是,你知道任何可以帮助解决这个问题的框架吗?或者可能是一种表达这个问题的方法,可以帮助我找到解决方案的路径。
最后,理想情况下,这个框架将使用C ++(可能还有Java)。
答案 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数据库”和“分布式数据库”,您就会发现很多实现。