分布式系统中的逻辑顺序和总顺序示例

Sam*_*Sam 2 computer-science distributed-computing

总订单:

Lamport 时间戳可用于通过使用某种任意机制来打破联系(例如进程的 ID),在分布式系统中创建事件的总排序。

逻辑顺序:

当两个实体通过消息传递进行通信时,发送事件被称为“发生在接收事件之前”,并且可以在事件之间建立逻辑顺序

在此处输入链接描述

谁能给我一个例子,我可以看到逻辑顺序和总顺序的差异?两个订单有什么区别?

eli*_*sah 5

由于您正在寻找有关逻辑顺序和总顺序之间差异的示例,这里是我的老分布式算法老师在想解释该特定主题时告诉我们的一个小故事。

  • 假设A欠B一些钱。
  • A 在电话中告诉 B,A 将在下午 6 点将 B 在 A 当地分行的账户记入贷方
  • 因此,下午 6 点之后的任何时间,B 都可以从 A 的银行取款。
  • 假设 B 很好,并告诉 A 的分行,他们可以在晚上 8 点从 A 的账户中扣除 A 欠 B 的钱。
  • 所以 B 的分行基本上会向中央银行服务器发出借记电话,要求将 A 欠的钱转入 B 的账户,这就是将要发生的事情。
  • B 已经给 A 足够的时间来确保 A 已经向 B 银行表明,A 有足够的钱,以便 A 的借方交易可以通过。
  • B 会认为它应该通过,对吗?
  • 但事实证明,B 分公司的当地时间远远超前于实时。分行以为是晚上八点,其实还没到晚上八点。
  • A 信守诺言,正好在下午 6 点,A 的分行正好赶上时间。(与实时同步)
  • 所以在下午 6 点,A 已经将 A 欠 B 的金额贷记给 A 的中央银行服务器。
  • 不幸的是,中央银行服务器实时收到 B 的消息,比 A 发送消息的时间早得多。
  • 中央银行服务器不会在任何合乎逻辑的时间查看。当有一笔借记交易进入时,它会实时查看。银行里是否有钱用于支付这些借记交易?
  • 不,没有。所以B的请求被拒绝了。这是因为在现实世界场景中,逻辑时钟不够好。

那么是什么导致了这里的问题? 事实上,B 的分支的实时概念与实时完全不一致。B 当地银行的计算机可能有一个接近实时的时钟。它要么比实时快,要么比实时慢。

碰巧 A 的,A 的分支的时间与实时完全同步,但这对 A 没有帮助。

这个例子看起来有点复杂,直接理解。这就是众所周知的时钟同步问题

我强烈邀请您阅读 Lamport关于分布式系统中的时间、时钟和事件排序论文因为他提出了一种不同的方式来解释这些差异。

您可能还会发现这些参考资料非常方便:

我希望这有帮助。