绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
spanner里的paxos leader leases的不相交的限制是we为了什么?
2022-06-02 14:21:56
作者:张沟狂人
链接:https://www.zhihu.com/question/312293421/answer/2294311618


paxos write发生的时机是这个一个事务执行完所有read和write操作,进入commit流程之后,因为Spanner中,在事务提交之前,所有的写操作都是缓存在client,称之为client write。当进入提交流程之后,会把所有client真正写入底层存储,这个过程需要完成paxos共识,称做为paxos write。

across leaders里的leaders指的是这个paxos组的不同任期的leader,它们的lease interval也不会发生重叠,其实把这句话连起来看就通顺了:

within each Paxos group, Spanner assigns timestamps to Paxos writes in monotonically increasing order, even across leaders.
在一个paxos组中,Spanner给在这个paxos中发生的写操作(paxos write)分配的时间戳保持单调递增,即使这个paxos组发生leader切换。

主要原因是由于各个机器的时钟偏移,在发生leader切换后,前一个leader和新leader的lease interval可能会重叠,就像下面这样:

在发生重叠之后,存在的问题就是,在某个时间段,一个paxos组中存在两个leader,比如上面的[t1, t2],这就已经违反了paxos协议。


所以spanner让每个leader都维护已经分配过的大的时间戳 [公式] ,在发生leader迁移时,原leader通过wait,让TT.now.earliest > [公式] ,这样在新的leader上分配的时间戳就算在极端的时钟偏移也不会和上一个leader的lease interval发生重叠:

分享好友

分享这个小栈给你的朋友们,一起进步吧。

BigQuery Google cloud Spanner
创建时间:2022-04-02 16:21:52
"BigQuery Google cloud Spanner"
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • itt0918
    专家
戳我,来吐槽~