我们经常讨论分布式系统的 CAP 理论,那么一定对 CAP 中的 C 有一定的了解,CAP 中 C 指的就是强一致性(strong consistency),也就是线性一致性(linearizability)。接下来我们准备分别撰写以下三部分内容,对线性一致性做一次深入的剖析。 什么是线性一致性,线性一致性的实现和应用等 线性一致性测试的理论:包含线性一致性的精
什么是线性一致性(Linearizability)? 简单来说, 线性一致性是指一个系统表现得就像只有一个服务器,并且服务器没有故障,每次执行一个客户端请求,并且没有奇怪的事情发生。在线性一致性系统中,执行历史是一系列的客户端请求,可以按照一个顺序排列,并且排列顺序与客户端请求的实际时间相符合。这意味着操作是非并发的,每...
这就是线性一致性(linearizability)的基本思想,他还有很多其他称呼:原子一致性(atomic consistency)、强一致性(strong consistency)、即时一致性(immediate consistency),或者外部一致性(external consistency)。线性一致性的精确定义很精妙,本节余下部分会进行详细探讨。但其基本思想是,一个系统对外表现的像所有数据只有一个...
线性一致性要求数据的存在形式满足一定的线性函数关系,也就是参数估计的数学基础。它表达了一组观测数据和被估计参数之间的关系。 线性一致性有两个主要内容:一是一致性,即所有观测数据必须满足线性方程组的线性约束;二是参数估计的精确性,即系数矩阵的逆矩阵必须存在,因此系数估计必须精确,可以达到最优估计。 线性...
线性一致性又叫做原子一致性,强一致性。线性一致性可以看做只有一个单核处理器,或者可以看做只有一个数据副本,并且所有操作都是原子的。在可线性化的分布式系统中,如果某个节点更新了数据,那么在其他节点如果都能读取到这个最新的数据。可以看见线性一致性和我们的 CAP 中的 C 是一致的。举个非线性一致性的...
实现线性一致的系统 我们已经看了一些依赖线性一致性的例子,接下来让我们思考下如何实现一个提供线性一致语义的系统。 线性一致性的本质是在说:系统表现得像只有一个数据副本,且所有施加于其上的操作都会原子性(瞬间)的完成。那么,我们最简单的实现方式就是真的只用一个数据副本。但其问题在于,不能容错:一旦该副本...
线性一致性最早由M.赫利希(Maurice Herlihy)和J.温(Jeannette Wing)在1987年和1990年的论文中提出,已经被广泛接受为并发对象的正确性定义之一。具体的定义基于历史的概念:历史是方法调用事件和返回事件的序列。线性一致性要求,对于并发对象的每个执行历史,都可以被重新排列为一个合法的串行执行历史,而且该串行历史必须...
在讨论分布式系统时,共识算法(Consensus algorithm)和一致性(Consistency)通常是讨论热点,两者的联系很微妙,很容易搞混。一些常见的误解:使用了 Raft 0 或者 paxos 的系统都是线性一致的(Linearizability 1,即强一致),其实不然,共识算法只能提供基础,要实现线性一致还需要在算法之上做出更多的努力。以 TiKV 为例,它的...
在聊什么是线性一致性的时候,我们先来看看什么是CAP CAP理论:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。 1、一致性(Consistency) 一致性表示所有客户端同时看到相同的数据,无论它们连接到哪个节点。 要做到这一点,每当数据写入一个节点...
首先,线性一致性的定义如下:给定一系列相关的数学问题,当对某个问题的求解结果在给定范围内仍然适用于其他问题时,称之为线性一致性。 线性一致性有两个主要特性:简单性和可推广性。首先,它的简单性使得它在许多数学模型中,可以使用简单的数学方法来解决复杂的问题。其次,它的可推广性使得它可以用于解决多种规模和多...