【分布式系统】Ch 7 一致性和复制 (Consistency & Replication)

【分布式系统】Ch 7 一致性和复制 (Consistency & Replication)



前言

为了实现分布式存储系统的高可靠和高可用性,数据在系统中一般存储多个副本以实现自动容错。
分布式存储系统通过复制协议将数据同步到多个存储节点,并要做到保持多个副本之间的数据一致性。
因此,复制和一致性两个概念紧密相关。将重点介绍两种一致性模型,分别是以数据为中心和以用户为中心的一致性模型。


一、介绍

1.数据复制

1)复制的目的:提高分布式系统的可靠性、性能。

  • 高可靠性的体现:一个副本失效后,可以转换到另一个副本继续运行;通过多个副本可以对数据提供更好的保护。
  • 性能的体现:利用不同地理位置的副本迅速响应;利用不同的副本分担工作负荷。

2)复制的难点:保持各个副本间的一致性。

3)复制的代价:复制带来的多个拷贝可能导致一致性方面的问题。为了让多个拷贝间保持一致性,需要进行数据同步 ,因此需要付出代价。

2. 一致性模型

1)一致性问题: 更为具体地讲,我们是在讨论共享数据的读操作和写操作时讨论一致性问题。这里用广义的术语来讲,共享数据是通过分布式数据存储实现的。
在这里插入图片描述

  1. 一致性模型:一致性模型实际上是进程和数据存储之间的一个约定。若进程统一准守某些规则,那么数据存储将正常运行。
    在这里插入图片描述

二、以数据为中心的一致性模型

·不引入同步变量的方式

1. 严格一致性 (Strictly Consistency)

要求:对所有进程来说,所有写操作结果都是瞬息可见的。
其意味着,1)系统维持着对一个绝对的全局时间顺序。2)显然,这对分布式系统来讲是不可能的。后面将用时间间隔来代替绝对时间以对一致性要求放宽。
在这里插入图片描述
图a符合严格一致性,图b则不符合。

2. 顺序一致性 (Sequential Consistency)

一致性程度弱于严格一致性。
一致性要求:假设所有进程在共享数据上的读写操作按某种顺序执行,重点在于对于所有进程以相同的顺序看见共享存储器的访问。 这其中不需要时间作为顺序判断者,相比严格一致性,没有了最近写入的概念。
在这里插入图片描述
a)符合顺序一致性:所有进程以相同顺序看见共享存储器访问。
b) 不符合,P3和P4看见顺序不同。

3. 可线性化 (Linearizability)

在顺序一致性上加上时间戳。所有进程以相同顺序看见共享存储器访问,并且访问是根据(非唯一的)全局时间戳进行排序的。
在这里插入图片描述

4. 因果一致性 (Casual Consistency)

要求:
1)所有进程必须以相同的顺序看到具有潜在因果关系的写操作
2)不同机器上的进程可以以不同顺序看到并发的写操作
在这里插入图片描述
上图例子允许在因果一致性中出现(假设P2的写操作依赖P1的写操作,潜在关系a在b前面)。但不符合顺序和严格一致性。
在这里插入图片描述
a) 违反因果一致性:P3和P4的a、b读顺序不同。
b) 在并发情况下符合因果一致性的一个顺序。

5. 先进先出一致性 (FIFO Consistency)

相比于因果一致性,忽略不同进程之间的操作顺序,像管道一样限定同一进程的顺序(只要同一个进程的操作顺序保证正确)。
在这里插入图片描述
符合,a与(b,c)之间不要求顺序,但P2要求顺序b必须在c之前。

·引入同步变量的方式

1. 弱一致性(Weak Consistency)

要求对共享数据结构访问保持顺序一致性。对于同步变量的操作具有顺序一致性,全局可见。
并且只有当没有写操作等待处理的时候才可以进行,以保证对临界区域的顺序访问。在同步节点,所有使用者看到相同的顺序。
只有在执行了一次同步后,共享数据才被认为是一致的,如P2所示。
在这里插入图片描述

2. 释放一致性(Release Consistency)

弱一致性无法区分使用者是要进入还是退出临界区,因此释放一致性使用两个不同操作进行区分(require-release之间形成临界区)当release后,所有使用者可看到该操作。
在这里插入图片描述

3. 入口一致性(Entry Consistency)

简单讲就是对每个共享数据定义一个同步变量(锁)。没有进行同步就进行的读操作结果不保证。 如P2中对y值的读取。

在这里插入图片描述

三、以用户为中心的一致性模型

重点强调:单一用户访问不同副本的一致性。
在这里插入图片描述
有以下四种方案:单调读、单调写、写后读、读后写。

1. 单调读

在这里插入图片描述
在这里插入图片描述
在b的L2中读取为x2后,才收到来自L1的写操作,不保证单调读。

2. 单调写

在这里插入图片描述

3. 写后读

在这里插入图片描述

4. 读后写

在这里插入图片描述

四、副本管理

在这里插入图片描述

五、一致性协议

1. 远程写 & 本地写

在这里插入图片描述

2. 主动复制

在这里插入图片描述

3. 基于法定数量的协议

在这里插入图片描述
在这里插入图片描述

总结

  1. 以数据为中心的一致性
    在这里插入图片描述
  2. 以用户为中心的一致性主要有四种,单调读,单调写,写后读,读后写。

参考

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值