【问题标题】:What assigns timestamps to read-only transactions in Spanner?什么为 Spanner 中的只读事务分配时间戳?
【发布时间】:2020-09-03 11:29:17
【问题描述】:

Spanner 论文清楚地表明,提交时间戳是由协调器领导者为读写事务选择的。但是,我不确定为只读事务选择时间戳的位置。

文档here 说:

API 层将使用当前的 TrueTime 选择读取时间戳。

但是那个 API 层在哪里呢?这是否指的是论文所说的客户端用来定位相关跨度服务器的位置代理?该论文说它使用 TT.now().latest 但我不知道它在哪里被调用。

我曾假设时间戳可以由参与多站点读取的任何 Paxos 领导者选择,但显然不是。有人可以帮忙澄清一下吗?

【问题讨论】:

    标签: distributed-transactions google-cloud-spanner


    【解决方案1】:

    但是那个 API 层在哪里呢?这是否指的是论文所说的客户端用来定位相关跨度服务器的位置代理?

    没错,它在 API 代理中。

    我曾假设时间戳可以由参与多站点读取的任何 Paxos 领导者选择,但显然不是。

    要协商时间戳,强读取请求必须联系参与该读取的每个 Spanner 组的 Paxos 负责人。

    【讨论】:

    • 谢谢,这是有道理的。为了确认你的最后一点,论文说:“如果范围的值由多个 Paxos 组提供服务,则有多种选择。最复杂的选择是与所有组的领导进行一轮沟通,以根据LastTS()。Spanner 目前实现了一个更简单的选择。客户端避免了一轮协商,只是在 sread = TT.now().latest...论文发表后的选项,对吗?
    • 对于强读 - 是的,它必须联系所有 Paxos 组领导,这是这里描述的更复杂的选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 2011-10-30
    相关资源
    最近更新 更多