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 ¡ ¡

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend