栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

文章目录
  • 【分布式系统】Ch 7 一致性和复制 (Consistency & Replication)
  • 前言
  • 一、介绍
    • 1.数据复制
    • 2. 一致性模型
  • 二、以数据为中心的一致性模型
    • ·不引入同步变量的方式
      • 1. 严格一致性 (Strictly Consistency)
      • 2. 顺序一致性 (Sequential Consistency)
      • 3. 可线性化 (Linearizability)
      • 4. 因果一致性 (Casual Consistency)
      • 5. 先进先出一致性 (FIFO Consistency)
    • ·引入同步变量的方式
      • 1. 弱一致性(Weak Consistency)
      • 2. 释放一致性(Release Consistency)
      • 3. 入口一致性(Entry Consistency)
  • 三、以用户为中心的一致性模型
    • 1. 单调读
    • 2. 单调写
    • 3. 写后读
    • 4. 读后写
  • 四、副本管理
  • 五、一致性协议
    • 1. 远程写 & 本地写
    • 2. 主动复制
    • 3. 基于法定数量的协议
  • 总结
  • 参考


前言

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


一、介绍 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. 以用户为中心的一致性主要有四种,单调读,单调写,写后读,读后写。
参考
  • 分布式系统中的复制和一致性
  • 分布式和一致性笔记
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/933300.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号