大约 2 分钟
线性一致性
有些论文提到了强一致性,它基本等同于线性一致性。
线性一致性的描述的是一个分布式系统表现的就像只有一台服务器一样(假设其不会崩溃),该服务器可以按照顺序逐一执行客户端请求,且期间没有任何异常情况发生时的行为。
其定义如下:
- 客户端的一系列请求构成一个执行历史,执行历史整体可以按照一个顺序排列,要求排列顺序与客户端的实际时间相符合。
- 对于非并发请求(在时间上没有重叠的请求),其先后顺序已经确定的,要求排列顺序不能与这些确定的顺序冲突。例如所以如果一个客户端发送请求并收到响应,随后在某个时间点,另一个客户端发送请求并收到响应,那么这两个请求时有序的,因为其中一个是在另一个完成后开始的,所以它是线性化的。(happen-before关系)
- 每个读操作都能看到最近一次对该同一个数据进行写入之后的值。
这里的定义相对而言是抽象的,后续会使用例子进行讲解。
PS
线性一致性和顺序一致性的区别是什么?
- 线性一致性:更关注全局时间下的执行顺序(多个进程之间各个操作的执行顺序)
- 顺序一致性:更关注单个进程的执行顺序,即:对于顺序一致性,任何执行的结果与所有处理器的操作以某种顺序执行的结果相同,并且每个处理器的操作按照其程序指定的顺序出现在这个序列中。
Loading...