一致性模型

首先明确一下分布式的组成定义,为下面打好铺垫

 都做到了让系统“表现得像只有一个副本”。它们的不同在于,前一种排序遵循了不同用户的操作的时间先后顺序,而后一种排序没有。实际上,如果我们要求系统满足线性一致性,就只能得到前一种排序结果;而如果只要求系统满足顺序一致性,就有可能得到后一种排序结果

1.顺序一致性(sequential consistency

  • 条件I:重排后的序列中每一个读操作返回的值,必须等于前面对同一个数据对象的最近一次写操作所写入的值。(写入原子,读原子)

  • 条件II:原来每个进程中各个操作的执行先后顺序,在这个重排后的序列中必须保持一致。

2.线性一致性(linearizability) CAP中的C 强一致性

     在上面两个条件上加入一个条件

     

  • 条件III:不同进程的操作,如果在时间上不重叠,那么它们的执行先后顺序,在这个重排后的序列中必须保持一致

   也就是我在MIT6.824利用raft日志来保障的特性,不会读到旧值,如果另一个客户端在这个客户端读前写入成功的话。

如果时间上重叠的话,两个先后顺序都可以

比如下面这两个事件

3.最终一致性(eventual consistency)弱一致性

因果一致性:因果一致性_boring_111的博客-CSDN博客

外部一致性:如何理解数据库的内部一致性和外部一致性? - 知乎

External Consistency 除了在串行做之上,还对事务串行的排列顺序提出了更多的要求。要求是这样的,如果一个事务 A 已经完成了,另一个事务 B 才开始,那么事务 B 在数据库里修改的数据的生效时间一定要在事务 A 的生效时间之后。这是一句废话吗?对于常见的单机数据库,这确实是废话,因为保证 A、B 的先后关系不费吹灰之力,所以一般单机数据库系统都隐含保证了这一点。但是在分布式数据库里,当 A、B 两个事务发生在不同的机器上时,保证先后关系是非常困难的,所以才用 External Consistency 专门描述这种特性得到了保证

External Consistency 和 Strict Serializability 是完全等价的。

 

 Reference·

条分缕析分布式:浅析强弱一致性

周刊(第22期):图解一致性模型 - codedump的网络日志

如何理解数据库的内部一致性和外部一致性? - 知乎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值