乐观复制算法

     本文是关于乐观复制算法的一篇综述性文章。对于弱一致性,乐观复制的研究主要是因为三年前我们想实现一款与Dropbox类似的软件。在过去的三年间,我们完成了我们的工作,同时也解决了期间遇到的许多问题。在解决这些问题中,个人觉得《Replication: Optimistic Approaches》(Yasushi Saito, Marc Shapiro 2004)这篇文章对我们的帮助最大,所以自己抽空将全文翻译了出来。

    ​下面我先给出全文的大纲,全文一共有70多页。前60是对原文的翻译,后10多页(附件B和附件C)是自己的一些理解和思考。

 

乐观复制算法

目录

1.介绍... 1

1.1 悲观复制算法和他们的局限... 2

1.2 乐观复制:总述与优点... 3

1.3 乐观复制:目标和挑战... 5

1.3.1 一致性... 5

1.3.2 内容质量保证... 8

1.3.3 扩展性... 8

1.4 路线图     9

2.采用乐观复制技术的应用... 11

2.1 互联网服务... 11

2.1.1DNS:广域网上的缓存和镜像... 11

2.1.2Usenet:广域网信息交换... 12

2.2 移动数据系统... 13

2.3 CVS:计算辅助协作... 13

2.4 总结     14

3.基本定义... 15

3.1 对象     15

3.2 一致性和冲突... 16

3.3 冲突处理技术的分类... 18

4.单Master系统... 20

5.多master的state-transfer系统... 21

5.1 使用Thomas写规则的更新传播与冲突处理... 21

5.2 在State-transfer系统中检测与解决冲突... 23

5.2.1 Two-Timestamp 算法... 23

5.2.2 版本向量... 25

5.2.3 State-transfer系统的冲突解决... 26

5.3 支持大对象... 26

5.4 在空间上的开销... 27

6.多Master的operation transfer系统... 29

6.1构造一个日志... 31

6.2使用Timestamp向量的更新传播... 32

7.Operation-transfer系统中的调度和冲突处理... 35

7.1 语法操作调度... 36

7.2 语义操作调度... 37

7.2.1挖掘交换特性... 37

7.2.2典范操作排序... 37

7.2.3 IceCube中的语义调度... 38

7.3 操作转换... 39

7.4 解决冲突操作... 40

7.5 提交操作... 41

7.5.1 Ack Vectors41

7.5.2 Primary Commit Protocol 42

7.5.3 Quorum Commit Protocal 42

8. 保证内容质量... 44

8.1 保证访问请求间的因果关系... 44

8.1.1 明确的因果依赖... 45

8.1.2 Session保证... 45

8.2 限制不一致... 47

8.3用概率技术来降低不一致... 48

9. 扩展乐观复制系统... 49

9.1 评估冲突比例... 49

9.2 通过控制通信拓扑结构来扩展系统... 50

9.3 推送技术... 51

9.3.1 Blind Flooding52

9.3.2 连接状态监控技术... 52

9.3.3 时间戳矩阵:估计远端节点的状态... 53

9.4 添加和移除master节点... 54

10. 总结... 56

10.1 对比乐观复制策略... 56

10.2 算法总结... 57

附件A.1 Happen-before 关系... 60

附件B-Version vectors算法介绍和不足... 61

附件C-一致性模型... 64

1.相互一致性... 64

2.强一致性     66

3.弱一致性     67

3.1 Read-your-write68

3.2 Session consistency69

3.3 单调读一致性Monotonic read consistency70

3.4 单调写一致性Monotonic write consistency71

3.5 因果一致性Causal consistency72

4.最终一致性... 72

 





原文地址:https://www.cnblogs.com/lqxinxin/p/3095661.html