MIT6.824 Lecture14 Spanner

高层组织架构 

数据切分成多个paxos group来进行backup,这样做的目的可以提高并行行。paxos和raft采用的majority多数原则可以对抗容错,和一些高延迟机器。

挑战

1)读要读到最新写入的值  2)跨越切片的事务 3)事务必须是可串行化的

读写事务

利用上节课的2pl和2pc策略

只读事务

只在本地备份上读取,这就保障了一致性,同时也无需上锁,和二阶段提交,这使得只读事务处理起来fast

正确性

在可串行化(没有时间要求)上更加严格的external consistency (if T1 < T2 T2 要看到T1的全部写入)

怎么实现正确性

通过加时间戳,然后根据时间戳的顺序,然后每个backup的数据上也有时间戳

读事件要等待时间看看是否有要准备好,将提交的事务,和将要开始写入的事务

时间偏大的话,等待时间长点,不影响正确性

时间偏小的话,可能读到的不是最新写入的,正确性受到影响,违反了external consistency

时钟设计

实现这些属性的关键是一个新的TrueTime API及其实现。该API直接暴露了时钟不确定度,且对Spanner的时间戳的保证基于该API的实现提供的界限内。如果不确定度较大,Spanner会减速以等待该不确定度。Google的集群管理软件提供了TureTime API的一种实现。该实现通过使用多种现代参考时钟(GPS和原子时钟)来让不确定度保持较小(通常小于10ms)。

 

正常情况下时钟难免有误差,TrueTime在底层使用的参考时间为GPS和原子时钟。但还是有误差。所以用(最早,最晚)这样的区间来进行记录 commit和start的时间戳从最晚开始(等待时间长点,不影响正确性)commit  wait delay C 到 read now.最早时刻。

Summary

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值