Skip to content

Latest commit

 

History

History

Lecture 8: Zookeeper Case Study

课前阅读

zookeeper

FAQ

  1. Why are only update requests A-linearizable?
  2. How does linearizability differ from serializability?
  3. What is pipelining?
  4. What about Zookeeper's use case makes wait-free better than locking?
  5. What does wait-free mean?
  6. What is the reason for implementing 'fuzzy snapshots'? How can state changes be idempotent?
  7. How does ZooKeeper choose leaders?
  8. How does Zookeeper's performance compare to other systems such as Paxos?
  9. How does the ordering guarantee solve the race conditions in Section 2.3?
  10. How big is the ZooKeeper database? It seems like the server must have a lot of memory.
  11. What's a universal object?
  12. How does a client know when to leave a barrier (top of page 7)?
  13. Is it possible to add more servers into an existing ZooKeeper without taking the service down for a period of time?
  14. How are watches implemented in the client library?

课堂讲义

讲义

FAQ

作业

One use of Zookeeper is a fault-tolerant lock service (see the section "Simple locks" on page 6). Why isn't possible that two clients can acquire the same lock? In particular, how does Zookeeper decide if a client has failed and it can give the lock to some other client?

LAB 3

[LAB 3 说明](6.824 Lab 3_ Fault-tolerant Key_Value Service.html)