ITPub博客

首页 > 数据库 > > spanner里的paxos leader leases的不相交的限制是we为了什么?

spanner里的paxos leader leases的不相交的限制是we为了什么?

作者:u_9ff4c058a0e0 时间:2022-06-02 14:21:56 0 删除 编辑
作者:张沟狂人
链接: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发生重叠:

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69999831/viewspace-3129038/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Axibase介绍
请登录后发表评论 登录
全部评论

注册时间:2022-02-11

  • 博文量
    1828
  • 访问量
    20547