MIT6.824 Lec13 Spanner

Spanner

Spanner的架构设计如下图所示。
在这里插入图片描述
采取这种设计原则的好处:

  • Sharding allows huge total throughput via parallelism
  • Datacenters fail independently – different cities.
  • Clients can read local replica – fast!
  • Can place replicas near relevant customers.
  • Paxos requires only a majority – tolerate slow/distant replicas.
  • Coordinator leader由任意的Paxos group leader,解决了2PC中coordinator leader crash的问题。

需要解决的问题:

  • Read of local replica must yield fresh data.
    • But local replica may not reflect latest Paxos writes!
  • A transaction may involve multiple shards -> multiple Paxos groups.
  • Transactions that read multiple records must be serializable.
    • But local shards may reflect different subsets of committed transactions!

Read-Write Transaction

假设需要执行以下银行事务:

BEGIN
  x = x + 1
  y = y - 1
END

Spanner提交该事务的具体流程如下所示:
在这里插入图片描述

  • Client picks a unique transaction id (TID).
  • Client sends each read to Paxos leader of relevant shard
    • Each shard first acquires a lock on the relevant record
    • Separate lock table per shard, in shard leader.
    • Read locks are not replicated via Paxos, so leader failure -> abort.
  • Client keeps writes private until commit.
  • When client commits:
    • Chooses a Paxos group to act as 2pc Transaction Coordinator (TC).
    • Sends writes to relevant shard leaders.
    • Each written shard leader:
      • Acquires lock(s) on the written record(s).
      • Log a “prepare” record via Paxos, to replicate lock and new value
      • Tell TC it is prepared Or tell TC “no” if
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值