一致性

(一)一致性的概念

一致性是通过可见性来定义的。
一致性是指多副本中的数据一致性。

(二)全局排序的概念
尝试对所有进程的读写操作做一次全局排序(全局排序就是排成一列的意思)
  1. 全局排序中属于同一个进程的读写顺序肯定是不变的
  2. 进程间的读写顺序按照前一个进程的write操作对之后其他进程是否可见来排序,如果可见则 write(a,4) -> read(a,4), 如果不可见则 read(a,0) -> write(a,4)
全局排序排序了所有进程的读写操作

全局排序是对所有进程的读写操作的排列,关键是排序了所有进程的写操作,所以在顺序一致性模型下,所有进程看到的写操作都是一样的顺序,进程按顺序依次可见每个写操作。

可以反推:只要所有进程看到的写操作都是一样的顺序,那么所有进程的读写操作就能做全局排序。

(三)一致性的分类

一致性分为三种:强一致性,顺序一致性与弱一致性,图例是个典型。
在这里插入图片描述

在这里插入图片描述

强一致性
强一致性也称线性一致性

强一致性要求进程的写操作对其他线程立即可见
强一致性保障了客户端访问其任何一个节点,都能看到最新某个客户端写入的数据
关键词:立即可见

全局排序: Write(y,2) -> Write(x,4) -> Read(x,4) -> Read(y,2)

顺序一致性

顺序一致性没有严格的立即可见的要求,仅仅要求所有进程看到的写操作都是一样的顺序。
顺序一致性表示客户端访问某个节点,很可能看不到最新写入的数据
顺序一致性 -> 写操作的顺序是一致的

顺序一致性需要回答一个问题,如果写操作不是立即对其他进程可见,那么何时对其他进程可见??

全局排序: Write(y,2) -> Read(x,0) -> Write(x,4) -> Read(y,2)

弱一致性
弱一致性也称最终一致性

弱一致性是无法保证所有进程看到的写操作都是一样的顺序

(四)可见性

进程看到了某个写操作就表明这个写操作对当前进程可见。看到就是可见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值