问题描述
我通常在Stackoverflow和google中搜索该问题的答案,但我总是得到“唯一的结果”,即最终的一致性保证最终所有写入都将到达群集/仲裁中的所有节点。
如果不能保证这一点,那么为什么会有这样的 受欢迎的一致性方案 ?
如果节点X执行op1,op2,op3,并且所有这些更新都传播到节点Y,但是按照op3,op2,op1的顺序并没有帮助,不是吗?
在 历史记录前缀 中,我的意思是,如果节点X当前操作历史是op1,op2,op3,则如果节点Y具有op1或op1,op2操作历史,则它具有节点X的前缀历史相同
解决方法
不,不需要。
例如考虑:
op1在时间t1确实“设置了key-1 = 5”
op2在时间t2确实“设置了key-1 = 6”
op3在时间t3确实“设置了key-1 = 7”
大多数异步复制策略将使用某种形式的变更日志从主副本同步到辅助副本。现在,如果要在数据库或分布式存储中实现“ 最终一致性”复制方案,则只需对上述步骤进行日志压缩,然后仅复制最后一个操作(键1 = 7 )到中学。另一方面,对于“ 一致前缀”方案,我需要以相同顺序复制所有3个操作。
复制方案的选择取决于您的应用程序从辅助副本中读取时想要什么样的一致性。