分布式系统中逻辑顺序和全序的例子

Example of logical order and total order in distributed system

总订单:

Lamport timestamps can be used to create a total ordering of events in a distributed system by using some arbitrary mechanism to break ties (e.g. the ID of the process).

逻辑顺序:

When two entities communicate by message passing, then the send event is said to 'happen before' the receive event, and the logical order can be established among the events

enter link description here

谁能给我一个例子,让我看看逻辑顺序和总顺序的区别?两种顺序有什么区别?

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

  • 假设A欠B一些钱。
  • A 在 phone 上告诉 B,A 将在 6 p.m 将 A 的本地分行贷记到 B 的帐户中。
  • 所以在 6 p.m 之后的任何时间,B 都可以从 A 的银行取款。
  • 假设 B 很好,并告诉 A 的分支在 8 p.m。他们可以从A的账户中扣除A欠B的钱。
  • 所以 B 的分行基本上会向中央银行服务器发出借记调用,要求将 A 所欠的钱转入 B 的账户,这就是将要发生的事情。
  • B 已给 A 足够的时间来确保 A 已向 B 银行表明 A 有足够的钱,以便 A 的借记交易可以通过。
  • B 会认为它应该通过,对吧?
  • 但事实证明,B分行的本地时间远远领先于实际时间。分支认为是 8p.m.,还不完全是 8p.m.,然而。
  • A信守诺言,正好在6点p.m,A的支线恰好与时俱进。 (与实时同步)
  • 因此在 6 p.m.,A 已将 A 欠 B 的金额记入 A 的中央银行服务器。
  • 不幸的是,中央银行服务器实时收到 B 的消息比 A 发送消息的时间早得多。
  • 中央银行服务器没有查看任何合乎逻辑的时间。当有借记交易进入时,它会实时查看。银行里有钱来支付这些借记交易吗?
  • 不,没有。所以拒绝了B的请求。 这是现实场景中逻辑时钟不够好的结果。

那么这里的问题是什么引起的呢? 事实上,B 分支的实时概念与实时完全不一致。 B 本地银行的计算机可能有一个时钟,该时钟相对于真实 time.It 要么比实际时间快,要么比实际时间慢。

正好A的,A的分店时间和实际时间完全同步,但这对A没有帮助。

这个例子似乎有点复杂,很难直接理解。 这被称为 时钟同步问题

强烈建议您阅读 Lamport 的 paper 关于 分布式系统中的时间、时钟和事件顺序 的文章,因为他提供了一种不同的方式来解释差异。

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

希望对您有所帮助。