Answer Key: Time, Ordering, and Causality
Exercise 1: Design Ordering
Question: Design an event ordering system for a distributed application. What clocks do you use?
Answer
Use Vector Clocks for precise causality tracking: - Each process maintains vector of counters - Captures causality precisely - Can detect concurrent events
Alternative: Use Lamport clocks if precision not needed (simpler, less storage).
Answer: Use vector clocks for precise causality, or Lamport clocks for simpler ordering.
Exercise 2: Handle Clock Skew
Question: Your system has clock skew. How do you handle it? What's the strategy?
Answer
Strategies: 1. Use logical clocks: Don't rely on physical clocks 2. Synchronize clocks: Regular clock synchronization (NTP) 3. Bounded uncertainty: Use TrueTime-like approach with bounded uncertainty
Answer: Use logical clocks (vector clocks), synchronize physical clocks regularly, or use bounded clock uncertainty.
Exercise 3: Establish Causality
Question: How do you establish causality between events in a distributed system?
Answer
Use Vector Clocks: - Each event gets vector clock timestamp - Compare vector clocks to establish causality - If V(A) < V(B), then A → B
Answer: Use vector clocks to establish causality by comparing timestamps.