分布式系统中事件的部分排序

Posted

技术标签:

【中文标题】分布式系统中事件的部分排序【英文标题】:Partial ordering of events in a distributed system 【发布时间】:2011-06-04 23:33:01 【问题描述】:

我想知道是否有人可以用外行的方式解释分布式系统中事件的偏序是什么?还有,什么是全序?

我真的很感激。我浏览了整个网络,我能找到的只是定义部分排序和全排序的数学方程,但不是在分布式系统的上下文中。

非常感谢

【问题讨论】:

如果分布式系统会使这些术语与它们的数学定义显着不同呢?有什么可以这样做的吗? 您好。我不太了解与部分排序和全排序相关的数学方程。我只是想知道是否有一些人们知道的定义。谢谢 【参考方案1】:

总排序是一种定义序列中每个元素的确切顺序的排序。

部分排序系列中的元素是一种排序,它不指定每个项目的确切顺序,而只定义某些相互依赖的关键项目之间的顺序。

这些词的含义在分布式计算的上下文中是完全一样的。分布式计算对这些术语的唯一意义是事件的部分排序全排序更常见。在本地的单线程应用程序中,事件发生的顺序是完全有序的,隐含的,因为 CPU 一次只能做一件事。在分布式系统中,您通常只协调那些相互依赖的事件的部分排序,而让其他事件以它们发生的任何顺序发生。

示例,取自 cmets:如果您有三个事件 A, B, C,那么如果它们总是必须按照 A > B > C 的顺序发生,则它们是完全有序的。但是,如果A 必须在C 之前发生,但您不在乎B 何时发生,那么它们是部分有序的。在这种情况下,我们会说序列A > B > CA > C > BB > A > C 都满足偏序

【讨论】:

天哪,太棒了!这为我解决了问题。非常感谢。因此,如果我有 2 个事件,A 和 B。如果 A 和 B 或 B 和 A 之间没有“之前发生”的关系,我可以说 A 和 B 是部分有序的?我可以说 A 和 B 是完全有序的,如果在一个单一的过程中 A '发生在' B '发生在' A 之前?你是个传奇!谢谢;) @Joeblack,不完全是。如果您有三个事件A, B, C,那么如果它们总是必须按照A > B > C 的顺序发生,那么它们是完全有序的。但是,如果 A 必须在 C 之前发生,但您不在乎 B 何时发生,那么它们是部分排序的。在这种情况下,我们会说序列A > B > CA > C > BB > A > C 都满足偏序。 好吧,这是有道理的。再次感谢您的所有帮助。我真的很感激! 这个答案很棒而且非常清晰,特别是示例部分 niceeee 如果我理解正确,那么以下假设是正确的。在实体之间的全序的情况下,只有一个有序的实体列表是可能的,但在部分排序的情况下,多个有序列表是可能的。

以上是关于分布式系统中事件的部分排序的主要内容,如果未能解决你的问题,请参考以下文章

分布式系统的时间

分布式系统的特征

分布式系统的特征

分布式系统:时间时钟和事件序列

分布式 CouchDB 系统中的文档排序

分布式可扩展存储系统 BaikalDB