wide area storage
play

Wide-Area Storage Stores: Stores: Stores: Status - PowerPoint PPT Presentation

Dont Se$le for Eventual : Scalable Causal Consistency for Wide-Area Storage


  1. Don’t ¡Se$le ¡for ¡Eventual : ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Scalable ¡Causal ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡Consistency ¡for ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡Wide-­‑Area ¡Storage ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡with ¡COPS ¡ Wya$ ¡Lloyd * ¡ ¡Michael ¡J. ¡Freedman * ¡ ¡ ¡Michael ¡Kaminsky † ¡ ¡ ¡ ¡David ¡G. ¡Andersen ‡ ¡ * Princeton, ¡ † Intel ¡Labs, ¡ ‡ CMU ¡

  2. Wide-­‑Area ¡Storage ¡ Stores: ¡ Stores: ¡ Stores: ¡ Status ¡Updates ¡ Posts ¡ Tweets ¡ Likes ¡ +1s ¡ Favorites ¡ Comments ¡ Comments ¡ Following ¡List ¡ Photos ¡ Photos ¡ Friends ¡List ¡ Circles ¡

  3. Wide-­‑Area ¡Storage ¡ Serves ¡Requests ¡Quickly ¡

  4. Inside ¡the ¡Datacenter ¡ Web ¡Tier ¡ Storage ¡Tier ¡ A-­‑F ¡ Remote ¡DC ¡ G-­‑L ¡ Web ¡Tier ¡ Storage ¡Tier ¡ A-­‑F ¡ G-­‑L ¡ M-­‑R ¡ M-­‑R ¡ S-­‑Z ¡ S-­‑Z ¡

  5. Desired ¡ProperXes: ¡ALPS ¡ • A vailability ¡ “Always ¡On” ¡ • L ow ¡Latency ¡ • P arXXon ¡Tolerance ¡ • S calability ¡

  6. Scalability ¡ Increase ¡capacity ¡and ¡throughput ¡in ¡each ¡datacenter ¡ A-­‑C ¡ A-­‑Z ¡ A-­‑Z ¡ A-­‑F ¡ A-­‑F ¡ A-­‑L ¡ A-­‑C ¡ A-­‑L ¡ D-­‑F ¡ G-­‑L ¡ G-­‑L ¡ M-­‑Z ¡ M-­‑Z ¡ D-­‑F ¡ G-­‑J ¡ M-­‑R ¡ M-­‑R ¡ G-­‑J ¡ K-­‑L ¡ S-­‑Z ¡ K-­‑L ¡ S-­‑Z ¡ M-­‑O ¡ M-­‑O ¡ P-­‑S ¡ P-­‑S ¡ T-­‑V ¡ T-­‑V ¡ W-­‑Z ¡ W-­‑Z ¡

  7. Desired ¡Property: ¡Consistency ¡ • Restricts ¡order/Xming ¡of ¡operaXons ¡ • Stronger ¡consistency: ¡ – Makes ¡programming ¡easier ¡ – Makes ¡user ¡experience ¡be$er ¡

  8. Consistency ¡with ¡ALPS ¡ Strong ¡ Impossible ¡[Brewer00, ¡GilbertLynch02] ¡ SequenXal ¡ ¡ ¡ ¡ Impossible ¡[LiptonSandberg88, ¡AdyaWelch94] ¡ Causal ¡ ¡ ¡ ¡ ¡ ¡COPS ¡ ¡ ¡ ¡ ¡ ¡ Amazon ¡ ¡ ¡ ¡LinkedIn ¡ ¡ ¡Facebook/Apache ¡ Eventual ¡ ¡ ¡ ¡ Dynamo ¡ ¡ ¡Voldemort ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡Cassandra ¡

  9. System ¡ A ¡ L ¡ P ¡ S ¡ Consistency ¡ Sca$er ¡ ✖ ¡ ✖ ¡ ✖ ¡ ✔ ¡ ✔ Strong ¡ Walter ¡ ✖ ¡ ✖ ¡ ✖ ¡ ? ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ PSI ¡+ ¡Txn ¡ COPS ¡ ✔ ¡ ✔ ¡ ✔ ¡ ✔ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Causal+ ¡ Bayou ¡ ✔ ¡ ✔ ¡ ✔ ¡ ✖ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Causal+ ¡ PNUTS ¡ ✔ ¡ ✔ ¡ ? ¡ ✔ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Per-­‑Key ¡Seq. ¡ Dynamo ¡ ✔ ¡ ✔ ¡ ✔ ¡ ✔ ¡ ✖ ¡ ¡ ¡ ¡ ¡ Eventual ¡

  10. Causality ¡By ¡Example ¡ ¡ Causality ¡( ¡ ¡ ¡ ¡ ¡ ¡ ¡) ¡ ¡Remove ¡boss ¡from ¡ Friends ¡ Thread-­‑of-­‑ExecuXon ¡ ¡ ¡friends ¡group ¡ Boss Gets-­‑From ¡ TransiXvity ¡ ¡Post ¡to ¡friends: ¡ New ¡Job! ¡ ¡ ¡“Time ¡for ¡a ¡new ¡job!” ¡ ¡Friend ¡reads ¡post ¡

  11. Causality ¡Is ¡Useful ¡ For ¡Programmers: ¡ For ¡Users: ¡ Friends ¡ Photo ¡Upload ¡ Boss Add ¡to ¡album ¡ New ¡Job! ¡ Employment ¡Integrity ¡ ReferenXal ¡Integrity ¡

  12. Conflicts ¡in ¡Causal ¡ K=1 ¡ K=1 ¡ K=1 ¡ K=2 ¡ K=2 ¡ K=2 ¡

  13. Conflicts ¡in ¡Causal ¡ Causal ¡+ ¡Conflict ¡Handling ¡= ¡ Causal+ ¡ K=2 ¡ K=3 ¡ K=2 ¡ K=3 ¡ K=2 ¡ K=3 ¡

  14. Previous ¡Causal+ ¡Systems ¡ • Bayou ¡‘94, ¡TACT ¡‘00, ¡PRACTI ¡‘06 ¡ – Log-­‑exchange ¡based ¡ • Log ¡is ¡single ¡serializaXon ¡point ¡ – Implicitly ¡captures ¡and ¡enforces ¡causal ¡order ¡ – Limits ¡scalability ¡OR ¡ – No ¡cross-­‑server ¡causality ¡

  15. Scalability ¡Key ¡Idea ¡ • Dependency ¡metadata ¡explicitly ¡captures ¡causality ¡ • Distributed ¡verificaXons ¡replace ¡single ¡serializaXon ¡ – Delay ¡exposing ¡replicated ¡puts ¡unXl ¡all ¡ ¡ ¡ dependencies ¡are ¡saXsfied ¡in ¡the ¡datacenter ¡

  16. COPS ¡ All ¡ Data ¡ Causal+ ¡ Local ¡Datacenter ¡ ReplicaXon ¡ All ¡ Data ¡ Client ¡Library ¡ All ¡ Data ¡

  17. Get ¡ Local ¡Datacenter ¡ Client ¡Library ¡ get ¡

  18. Put ¡ put ¡ put ¡ + ¡ aver ¡ ¡ = ¡ ordering ¡ metadata ¡ ? Local ¡Datacenter ¡ ? ¡ Client ¡Library ¡ put ¡ put_aver ¡ K:V ¡ ReplicaXon ¡Q ¡ put ¡ aver ¡

  19. Dependencies ¡ • Dependencies ¡are ¡explicit ¡metadata ¡on ¡values ¡ • Library ¡tracks ¡and ¡a$aches ¡them ¡to ¡put_avers ¡

  20. Dependencies ¡ • Dependencies ¡are ¡explicit ¡metadata ¡on ¡values ¡ • Library ¡tracks ¡and ¡a$aches ¡them ¡to ¡put_avers ¡ Client ¡1 ¡ put_aver(Key,Val,deps) ¡ put(Key, ¡Val) ¡ deps ¡ version ¡ . ¡. ¡. ¡ ¡ ¡ K version ¡ (Thread-­‑Of-­‑ExecuXon ¡Rule) ¡

  21. Dependencies ¡ • Dependencies ¡are ¡explicit ¡metadata ¡on ¡values ¡ • Library ¡tracks ¡and ¡a$aches ¡them ¡to ¡put_avers ¡ Client ¡2 ¡ get(K) ¡ get(K) ¡ value,version,deps' value ¡ deps ¡ . ¡. ¡. ¡ ¡ ¡ K version ¡ L 337 ¡ deps' ¡ (Gets-­‑From ¡Rule) ¡ L 337 ¡ M 195 ¡ ¡ (TransiXvity ¡Rule) ¡ M 195 ¡

  22. Causal+ ¡ReplicaXon ¡ put_aver(K,V,deps) ¡ K:V, deps ¡ ReplicaXon ¡Q ¡ put ¡ aver ¡

  23. Causal+ ¡ReplicaXon ¡ dep_check(L 337 ) ¡ put_aver(K,V,deps) ¡ K:V, deps ¡ deps ¡ ¡ ¡ L 337 ¡ M 195 ¡ ¡ Exposing ¡values ¡aver ¡ dep_checks ¡return ¡ ensures ¡causal+ ¡

  24. Basic ¡COPS ¡Summary ¡ • Serve ¡operaXons ¡locally, ¡replicate ¡in ¡background ¡ – “Always ¡On” ¡ • ParXXon ¡keyspace ¡onto ¡many ¡nodes ¡ – Scalability ¡ • Control ¡replicaXon ¡with ¡dependencies ¡ – Causal+ ¡Consistency ¡

  25. Gets ¡Aren’t ¡Enough ¡ My ¡ Remote ¡ You’re ¡ OperaXons ¡ Remote ¡ Datacenter ¡ Fired!! ¡ Progress ¡ Boss Remote ¡ Boss Boss Boss Progress ¡ New ¡Job! ¡ Remote ¡ Progress ¡ Portugal! ¡ Portugal! ¡ Boss New ¡Job! ¡ New ¡Job! ¡

  26. Gets ¡Aren’t ¡Enough ¡ My ¡ Remote ¡ You’re ¡ OperaXons ¡ Datacenter ¡ Fired!! ¡ Boss Boss Boss Boss Boss Boss New ¡Job! ¡ Remote ¡ Progress ¡ Portugal! ¡ Portugal! ¡ New ¡Job! ¡ Boss New ¡Job! ¡ New ¡Job! ¡ Portugal! ¡ Portugal! ¡ Remote ¡ Progress ¡ Boss Remote ¡ Progress ¡

  27. Get ¡TransacXons ¡ • Provide ¡consistent ¡view ¡of ¡mulXple ¡keys ¡ – Snapshot ¡of ¡visible ¡values ¡ • Keys ¡can ¡be ¡spread ¡across ¡many ¡servers ¡ • Takes ¡at ¡most ¡2 ¡parallel ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ rounds ¡of ¡gets ¡ Low ¡Latency ¡ • No ¡locks, ¡no ¡blocking ¡

  28. Get ¡TransacXons ¡ My ¡ Remote ¡ OperaXons ¡ Remote ¡ Datacenter ¡ Progress ¡ Boss Could ¡Get ¡ Remote ¡ Boss Boss Boss Boss Boss Progress ¡ Boss Portugal! ¡ New ¡Job! ¡ Remote ¡ Boss Portugal! ¡ Progress ¡ Portugal! ¡ Portugal! ¡ New ¡Job! ¡ New ¡Job! ¡ Portugal! ¡ Boss Portugal! ¡ New ¡Job! ¡ Remote ¡ Progress ¡ Boss Portugal! ¡ Never ¡ Boss Boss Boss Remote ¡ New ¡Job! ¡ Portugal! ¡ Progress ¡

  29. System ¡So ¡Far ¡ • ALPS ¡and ¡Causal+, ¡but ¡… ¡ • ProliferaXon ¡of ¡dependencies ¡reduces ¡efficiency ¡ – Results ¡in ¡lots ¡of ¡metadata ¡ – Requires ¡lots ¡of ¡verificaXon ¡ • We ¡need ¡to ¡reduce ¡metadata ¡and ¡dep_checks ¡ – Nearest ¡dependencies ¡ – Dependency ¡garbage ¡collecXon ¡

  30. Many ¡Dependencies ¡ • Dependencies ¡grow ¡with ¡client ¡lifeXme ¡ Put ¡ Put ¡ Get ¡ Get ¡ Put ¡ Put ¡

  31. Nearest ¡Dependencies ¡ • TransiXvely ¡capture ¡all ¡ordering ¡constraints ¡ ¡

  32. The ¡Nearest ¡Are ¡Few ¡ • TransiXvely ¡capture ¡all ¡ordering ¡constraints ¡ ¡

Recommend


More recommend