分布式系统中的一致性模型

本文详细探讨了分布式系统中的一致性模型,包括线性一致性、顺序一致性、因果一致性、PRAM一致性以及客户端中心的一致性模型如单调读、单调写、读你的写和读后写。这些模型在性能、可用性和一致性之间取得平衡,影响着分布式数据存储的行为。通过对各种一致性模型的比较,有助于理解它们在实际系统中的适用性和限制。

下面的图展示了各种一致性之间的关系:

在这里插入图片描述
图中的箭头表示了一致性模型之间的关系,例如满足线性一致性的系统也一定满足顺序一致性,但反之则不成立

分布式数据存储

分布式数据存储 Distributed Data-Store [1]

数据存储 (data store) 是对可以存储数据的服务的抽象。这里的数据存储可以是:共享内存 (shared-memory)、数据库、文件系统、对象和Web服务器等等。

数据存储存储的是一个个的数据项 (data items)。对于不同的数据存储,数据项可以有不同的含义,例如内存的一个页面、数据库的一条记录、文件系统的一个文件、对象的一个变量和一个网页等等。

客户端 (clients) 与数据存储建立连接,然后通过执行读写操作 (read and write) 来访问数据。客户端具体是如何与数据存储建立连接取决于是何种类型的数据存储,不过在讨论一致性时,我们可以忽略建立连接的细节,而仅仅考虑读写操作。

一致性

一致性 Consistency [1]

以分布式系统中的复制场景为例,每个副本节点 (replica) 都存储一份相同的数据副本。维护不同副本节点之间的一致性只一个重要的问题。

数据不一致主要有两种形式

  • 第一种数据不一致是数据可能是stale的。也就是说,副本节点中的一部分节点被更新了,而另一部分没被更新。通常使用时间或版本号来衡量数据是不是stale的。只要给定足够的时间,让所有的更新可靠的传递到所有副本节点,就能够消除数据的stale。
  • 第二种数据不一致是由于读写操作在不同副本节点上发生的顺序不一致。这个问题比数据的stale更严重,因为对于该问题,即使我们确保操作传递给了所有节点,也还是无法确保所有节点看到的都是一致的值。为了确保一致性,需要额外的条件。这种一致性也是我们的重点关注

一致性模型

一致性模型 Consistency Models

数据一致性和系统的性能、可用性等指标之间存在trade-off。实际的系统中,为了追求更高的性能或可用性,通常会放松对一致性的要求。下面来讲述各种一致性模型

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

Data-Centric Consistency Models

这类一致性模型适用于整个/所有数据存储 (apply to the whole data store)。这意味着,在这些一致性模型下,任何访问数据存储的客户端都会看到由这些一致性模型所限定的操作顺序。

线性一致性 (Linearizability)

线性一致性 (Linearizability),也叫严格一致性 (Strict C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值