a brief history of time
play

A Brief History Of Time In Riak Time in Riak Logical Time Logical - PowerPoint PPT Presentation

A Brief History Of Time In Riak Time in Riak Logical Time Logical Clocks Implementation details Mind the Gap How a venerable, established, simple data structure/algorithm was botched multiple times. Order of Events Dynamo And


  1. Riak 0.n Client Side IDs • Client Code Provides ID • Riak increments Clock at API boundary • Riak syntactic merge and stores object • Read, Resolve, Rinse, Repeat.

  2. Client Riak API Riak Vnode

  3. Riak Vnode

  4. Conflict Resolution • Client reads merged clock + sibling values • sends new value + clock • new clock descends old (eventually!) • Store single value

  5. Client Version Vector What Level of Consistency Do We Require?

  6. https://aphyr.com/posts/313-strong-consistency-models

  7. TEMPORAL TIME B B A A GET GET PUT PUT

  8. RYOW • Invariant: strictly increasing events per actor. • PW+PR > N • Availability cost • Bug made it impossible!

  9. Client VClock • Read not_found [] • store “bob” [{c, 1}] • read “bob” [{c, 1}] • store [“bob”, “sue”] [{c, 2}]

Recommend


More recommend