gpt4 book ai didi

distributed-computing - Google Spanner truetime 中的 "after"和 "before"方法是如何实现的?

转载 作者:行者123 更新时间:2023-12-05 03:59:47 29 4
gpt4 key购买 nike

根据他们的寻呼机,它说“TT.after() 和 TT.before() 方法是 TT.now() 的便利包装器。”

并根据What is the TrueTime API in Google's Spanner?

It also provides two functions:

  1. after(t) returns true if t has definitely passed. E.g. t < now().earliest.
  2. before(t) returns true if t has definitely not arrived, or t > now().latest.

我的问题是:

  1. 在 spanner 中的所有服务器上,TT.now() 是否返回相同的结果?
  2. 对于给定的时间 t,是否有可能在服务器 A 上 before(t) 为真而在服务器 B 上为假?
  3. 它们是单调的吗?例如在服务器 A 上,TT.after(t) 为真,一段时间后,TT.after(t) 是否有可能为假?

最佳答案

有关 Truetime 和 Spanner 如何工作的详细信息,请参阅 Spanner Whitpaper (1) 的第 3 部分.

关于如何实现的讨论在问题 "Why is Google's TrueTime API hard to duplicate?" (2) 中。

根据 Spanner 白皮书,TrueTime 值不是单个值,而是保证包含绝对值的时间戳范围。此范围考虑了潜在的时钟漂移 - 在 Google 的网络中,每 30 秒将服务器时钟与原子/GPS 引用时间同步最多 7 毫秒(来自白皮书)。

因此,如果 TTstamp1 是范围 (t1_lo, t1_hi) 并且 TTstamp2 是范围 (t2_lo, t2_hi),然后 before()after() 简单地比较这些范围的极端值以确认它们不重叠。

TTstamp1.before(TTValue2) = t1_hi < t2_lo
TTstamp1.after(TTValue2) = t1_lo > t2_hi

因此,您的问题的答案是:

  1. 不,即使在完全相同的时刻调用,TT.now() 也不会在所有服务器上返回相同的结果。然而,在那个时刻调用时在所有服务器上获得的值将相互重叠,这意味着它们之间没有一个在彼此之前或之后。

  2. 因此对于给定的 TrueTime t在技术上在服务器 A t.before(now) true 和服务器 B 上的 t.before(now)false 由于重叠比较和可能范围之间的差异。这对 Spanner 来说不是问题,因为它会等待直到没有重叠 (t.before(now)==true),然后再提交事务并存储其时间戳。

(注意:此信息来源于公开的白皮书和文档)

关于distributed-computing - Google Spanner truetime 中的 "after"和 "before"方法是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56885768/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com