分布式系统:5.Replication

本文最后更新于:2022年3月15日 中午

5 Replication

5.1 Manipulating remote state

幂等性

由于网络错误导致ack丢失,重试引发多次数据库的修改

因此分布式系统需要考虑重复多余请求的情况,在崩溃恢复的分布式模型中,这就意味着需要记录每次请求。

另一种解决方法就是使请求具有幂等性:

  • 幂等性就像集合的并操作,重复多少次都一样,只有执行和没执行的区别

墓碑

防止下图的情况:remove丢失,无法区分是否有过remove的情况

Untitled

方法1:用逻辑时间比较事件大小(最后写入胜利 Last writer wins,但是引入了开销)

方法2:用tombstone标记被删除的记录

Untitled

5.2 Quorums 法定人数

Untitled

Quorum机制是“抽屉原理”的一个应用。定义如下:假设有N个副本,更新操作wi。在W个副本中更新成功之后,才认为此次更新操作wi成功。称成功提交的更新操作对应的数据为:“成功提交的数据”。对于读操作而言,至少需要读R个副本才能读到此次更新的数据。其中,W+R>N ,即W和R有重叠。一般,W+R=N+1

Untitled

中心节点(服务器)读取R个副本,选择R个副本中版本号最高的副本作为新的primary。(read repair)

新选出的primary不能立即提供服务,还需要与至少与W个副本完成同步后,才能提供服务。

5.3 Replication using broadcast

如何在节点间复制?

Untitled

如果复制更新操作是可交换的,则可以按照不同的顺序更新并最终到同一状态。