我正在学习分布式系统中的顺序一致性,但无法理解解释的术语。如果有人能用外行的话说,为什么下面的(a)和(c)是顺序一致的,而(b)不是,我将不胜感激。
谢谢。
最佳答案
一次执行 e
的操作顺序一致当且仅当它可以排列成一个序列 s
这些操作中:
s
尊重每个进程的程序顺序。也就是说,对于任意两个操作 o1
和 o2
哪些是相同的进程,如果 o1
先于 o2
在 e
,然后 o1
应该放在o2
之前在 s
; s
,每个读操作返回对同一变量的最后一次写操作的值。 对于(a),
s
可以是:W(x)b [P2], R(x)b [P3], R(x)b [P4], W(x)a [P1], R(x)a [P3], R(x)a [P4]
对于 (c),
s
可以是:W(x)a [P1], R(x)a [P2], R(x)a [P3], R(x)a [P4], W(x)b [P3], R(x)b [P1], R(x)b [P2], R(x)b [P4]
但是,对于(b):
R(x)b, R(x)a
来自 P3
要求 W(x)b
来之前W(x)a
R(x)a, R(x)b
来自 P4
要求 W(x)a
来之前W(x)b
不可能构造这样的序列
s
.
关于分布式系统中的顺序一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30734060/