首页 >web前端 >js教程 >一致性模型和复制缓存

一致性模型和复制缓存

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-06 02:57:42661浏览

一致性模型

一致性模型是关于分布式系统中提供多少一致性的一组规定。之前的帖子中,有关于 PACELC 理论中 Latency 和 Consistency 之间权衡的信息,以及根据这个权衡会提供多少一致性。

上一篇文章中讨论的Replicache也是分布式系统的一种。据说 Replicache 遵循因果一致性。

Consistency Models and Replicache
来源

严格一致性

一致性,让您始终按时间顺序读取值。写入值后发生的任何读取都将始终读取该值。为了满足这一点,需要两个条件。有一个所有节点共享的全局时钟,必须与其同步,并且必须立即执行写入。

w(x)a:将值a写入x,r(x)a:从x读取值a

当节点 1 在时间 t 发生 w(x)a,并且在 t delta(0.00000000000000001s)之后节点 2 出现 r(x) 时,节点 2 必须读取值 a。

必须存在一个全局时钟来串行化操作,以便操作不会在同一个 t 时间执行,并且写入必须立即执行,以便必须在 t delta 时间读取写入的值。

但这实际上是不可能的。因此,严格一致性作为一种理论而存在。

如果在以下情况下遵守严格一致性
Consistency Models and Replicache

正确答案如下。
Consistency Models and Replicache

顺序一致性

顺序一致性的核心关键词是“全局排序”。所有写/读操作的行为必须像有一个统一的序列一样。另外,每个进程(客户端)执行的操作必须按照该顺序执行。

下面的例子中,p3和p4可以读取什么值?
Consistency Models and Replicache

以下与严格一致性相同,因此也满足顺序一致性。
Consistency Models and Replicache

您可以在下面找到全局排序,因此顺序一致性是正确的。
Consistency Models and Replicache

全局排序:w(x)a, r(x)a, w(x)b, r(x)b

但是,在下面的例子中,a 写在 b 之前,但读取的时间晚一些。在这种情况下,不满足顺序一致性。

Consistency Models and Replicache

因果一致性

因果关系是指因果关系。 “发生在 (→)” 理解这是一种关系很重要。

A → B 在以下情况下成立。

  1. 同一进程(客户端)中 A 出现在 B 之前
  2. A之后,消息发送完毕,接收消息的一方执行B。
  3. 如果 A → B 且 B → C,则 A → C。

因果一致性是一种规则,其中因果关系在所有节点中都可见。

下面的案例是因果一致性。

Consistency Models and Replicache

这里可以找到的唯一“发生之前”关系是 w(x)a → r(x)a 和 w(x)b → r(x)b,所有进程都满足这些关系。 P3先读b就可以了。这是因为两次写操作是独立的,所以w(x)a→w(x)b不存在因果关系。

以下内容并未建立因果一致性。原因是w(x)a→w(x)c存在因果关系,并且P3中c先于a读取。

Consistency Models and Replicache

最终一致性

最终 这是一条(最终)变得一致的规则。在某个时刻,当没有写操作并且网络稳定时,所有节点最终将看到相同的值。这是一个非常有限的约定。

副本一致性

据说复制遵循因果一致性。这是一个稍微强一点的因果一致性,我们稍后再了解。

以上是一致性模型和复制缓存的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn