分布式系统 Spinnaker

分布式系统 Spinnaker

什么是时间线一致性?

  • 所有replica都按照同一个顺序执行写操作。
  • 读操作可能会读到过时的值。
  • 怎么做到?写只能通过leader写。读可以读任何一个replica。

什么是linearizability?

  • 每个操作都有一个开始和结束时间。以客户端发出request和收到reply为界定。
  • 两个操作的时间可能有重叠,也可能完全没有交集。如果没有交集的,他们的先后顺序就是确定的。
  • 可线性化要求,能找到一个所有操作的全序关系,所有客户端看到的都是同一个顺序。这个全序关系满足2个条件:
    • 读到一个值,必须发生在写这个值之后。
    • 对于时间没有交集的操作,这个全序关系要符合他们原来的先后顺序。

课前问题

  • Please read the paper’s Appendices. In Spinnaker a leader to responds to a client request after the leader and one follower have written a log record for the request on persistent storage. Why is this sufficient to guarantee strong consistency even after the leader or the one follower fail?
  • 因为1个cohort只有3个服务器。这条log已经存在于2个服务器中——1个leader和1个follower就构成多数了。另外一个follower因为log太旧(不包含这条log),不可能被选为leader。所以就能防止这条已经commit的log丢失。
  • 它也有类似于Raft的选举限制的东西:LSN的epoch number类似于Raft的term。每次选举只有term最新,或者term一样新但是log比较长的,才能被选为leader。这就防止了已经commit的log被洗掉。

读操作

  • Raft的要求是读操作也要进log,等到commit的时候才从状态机读值。
    • 原因是split-brain。旧leader不知道自己已经不是leader,仍然执行读操作,读到的可能是旧值。
  • 这样比较慢。如果要加快,可以用lease。定义一个时间段,比如5秒。如果leader能够与过半的服务器保持心跳通信,他在5秒内可以自行读取值。如果换了新Leader,它在5秒内,不能commit写操作。

杂记

  • Spinnaker用Zookeeper来做leader选举。6.824课程老师认为原因是作者用Zookeeper来做shard assignment,所以干脆也用Zookeeper来做leader选举。
  • 在2011年以前,Paxos没有用来做数据库的replication,只是用来做配置服务。

参见

https://pdos.csail.mit.edu/6.824/papers/spinnaker-faq.txt
https://pdos.csail.mit.edu/6.824/notes/l-spinnaker.txt

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值