分布式系统中的 Partial ordering 和 Global ordering 的理解

在分布式系统中,我们在阅读关于事务一致性的论文中,经常会看到 partial ordering 和 global ordering。这里简单的说明下。

Partial ordering

部分有序。指在一系列的事件中,只保证部分的事件按照一定的顺序进行处理。

Global ordering / Total ordering

全局有序。很简单,就是所有的事件均按照一定的顺序处理。例如在一个单核系统中,所有的事件都是逐一发生的,发生了 A 事件才会发生 B 事件再发生 C 事件。

例子

假设我有三个事件 ${ A,B,C}$ ,假设事件的执行顺序是 $A>B>C$,那么该系统属于 Global ordering 。另一种情况,如果我们假设 $A>C$,执行 $C$ 事件需要先执行 $A$ 事件,而 $B$ 事件为独立事件,不受 $A$ 和 $C$ 的影响,那么这种情况称为 partial ordering。

所以我们能知道,基于 Lamport Timestamp 的系统一定是 partial ordering 的。因为 Lamport Timestamp 只保证同一个 key 的数据处理有序,而不保证整个系统的所有事件处理有序。

不清楚什么是 Lamport Timestamp 的可以阅读之前的文章:https://www.inlighting.org/archives/lamport-timestamp-vector-clock

参考资料

https://stackoverflow.com/questions/4620779/partial-ordering-of-events-in-a-distributed-system

原创文章,作者:Smith,如若转载,请注明出处:https://www.inlighting.org/archives/understand-partial-ordering-and-global-ordering

打赏 微信扫一扫 微信扫一扫
SmithSmith
上一篇 2020年10月13日 上午1:17
下一篇 2020年10月13日 下午1:20

相关推荐

  • TinyKV Project2 RaftKV

    这一节需要我们实现 Raft,TinyKV Raft 这部分很多都是抄 Etcd 的 Raft 模块。你可以注意到连测试用例都很像。所以这一节我拿到手就会做啊,首先去 Etcd c…

    2023年3月2日
    1.9K1
  • Raft 成员变更的相关问题

    之前一直没有深入了解过 Raft 的成员变更,实现也就是在 TinyKV 中搞了一个单步成员变更,以至于在面试的时候,甚至想当然以为成员变更一定要被 apply 后才生效,结果就被…

    2022年2月20日
    3.7K5
  • 2021 MIT 6.824 札记

    满打满算花了 25 天完成了 2021 MIT 6.824 的 4 个 lab,这里记录下自己遇到的坑和设计思路,为后续者参考。 这里个人给的难度评级是 Lab 2 > La…

    2021年8月9日
    6.5K0

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注