我有一个分布式应用程序,我想在其中复制一个最终一致的状态。该数据适用于 CRDT ( http://pagesperso-systeme.lip6.fr/Marc.Shapiro/papers/RR-6956.pdf ),它具有每个节点在给定相同消息集的情况下确定性的优良特性无需复杂的共识协议即可收敛到相同的值。
但是,我需要另一个消息传递/日志层来确保每个节点都能看到每条消息,即使面对不利的网络条件也是如此。
具体来说,我正在寻找具有以下属性的算法:
- 在异步网络上工作。
- 节点只需要知道他们的邻居,而不是整个网络。
- 可以随时添加或删除节点(即,网络不是固定大小或拓扑)。
- 网络可以是非循环的(如果需要,这可能是一个要求)。
- 能够更新由于临时网络中断或消息丢失而落后的节点。
- 能够使加入集群的新空节点保持最新。
- 网络收敛到一个值所花费的时间没有硬性限制(即,每个节点接收每条消息),但如果没有分区,它应该相当快(用模糊的术语来说,几秒钟,不是分钟)。
- 大小有界。保留整个消息历史(将无限增长)的算法是不合适的。
有人知道具有这些属性的算法吗?