在不可靠的网络中,是否有任何框架可以将一个对等体上生成的数据与所有其他对等体同步
Are there any frameworks to synchronize data generated on one peer with all other peers in an unreliable network?
我们正在开发一个具有以下需求的系统。
- 有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"分布式数据库",你就会发现很多实现。
- 松弛原子与无同步情况下的记忆连贯性
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 在C++中同步线程
- 与 stdio 同步是否使程序 I/O 非交互式?
- 如何在qt中同步应用程序和显示器的刷新率?
- Windows 进程间同步类似事件?
- 使用移动调用对等构造函数unique_ptr默认构造函数
- 当对套接字 send() 的同步调用由于连接另一端丢失而被阻止时,如何恢复?
- 当客户端在 write() 期间终止连接时,由对等套接字错误重置连接
- 将 10 个线程与原子布尔值同步
- ofstream::close() 是否在 Linux 上调用同步?
- 与Visual Studios(c ++)同步时如何组织github存储库?
- 原子获取是否与互斥锁释放同步?
- Boost (Beast) websocket:同步写入挂起
- Postgres vs MySQL:命令不同步;.
- 线程过程中的线程同步问题
- 同步读取多个 TCP 响应
- 同步两个具有不同帧速率的传感器
- curl_easy_perform() 失败:SSL 对等证书或 SSH 远程密钥不正常
- 在不可靠的网络中,是否有任何框架可以将一个对等体上生成的数据与所有其他对等体同步