引子
顺序一致性是并发系统的一个强安全属性。通俗地说,顺序一致性意味着操作似乎按某种全序进行,并且该顺序与每个单独进程上的操作顺序一致。
顺序一致性无法完全或持久地实现;如果发生网络分区,部分或全部节点将无法继续运行。
顺序一致性系统中的进程可能远远领先于或落后于其他进程。例如,它们可能读取任意陈旧状态。但是,一旦进程 A 观察到进程 B 的某些操作,它就永远不会观察到 B之前的状态。这与全序属性相结合,使顺序一致性成为程序员意想不到的强大模型。
当你需要实时约束时(例如,你想通过侧通道将某个事件告知其他进程,并让该进程观察该事件),请尝试线性化。当你需要完全可用性,并且不需要完全顺序时,请尝试因果一致性。
正文
Leslie Lamport 在 1979 年的论文《如何制造一台能够正确执行多进程程序的多处理器计算机》中定义了顺序一致性。他使用“顺序一致性”来表示。
任何执行的结果都与所有处理器的操作按某种顺序执行的结果相同,并且每个单独的处理器的操作都按照其程序指定的顺序出现在这个序列中。
Viotti 和 Vukolić将序列一致性分解为三个属性:
- SingleOrder(存在一些操作的全序)
- 动态随机存取记忆体
- RVal(顺序必须与数据类型的语义一致)
备注
本篇可能有些拗口以及难于理解,如果有疑问,欢迎大家留言,我将不定期跟大家讨论答疑。
原创不易,这个系列尽量拆成比较简短的话题,方便大家理解单一知识点,希望大家价值,你们的点赞关注转发是我持续下去的动力。
感谢!