Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ....

47
Causality is simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Transcript of Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ....

Page 1: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causality is simple

Carlos Baquero

Univ. Minho & INESC TEC

Portugal

Berlin Buzzwords 2016

Page 2: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causality is (moderatly) simple

Carlos Baquero

Univ. Minho & INESC TEC

Portugal

Berlin Buzzwords 2016

Page 3: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causality

Why should I care?

Page 4: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Everything is distributed

“Distributed systems once were the territory of computerscience Ph.D.s and software architects tucked off in acorner somewhere. Thats no longer the case.”

(2014 http://radar.oreilly.com/2014/05/everything-is-distributed)

Page 5: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Anomalies in Distributed Systems

A buzz, you have a new message, but message is not there yet

Remove your boss from a group, post to it and he sees posting

In LWW + bad clocks, read a value and cannot overwrite it

Assorted inconsistencies

Page 6: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Time

Can’t we use time(stamps) to fix it?

Page 7: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Time

The problem with time is that

(2015 http://queue.acm.org/detail.cfm?id=2745385)

Page 8: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Light speed is causality speed

CC© BY:© Hubble ESA, Flickr

Page 9: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Time is local

CC© BY:© Adam Greig, Flickr

Page 10: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Time needs memory

(Before)CC© BY:© Centophobia, Flickr

Page 11: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Time needs memory

(After)CC© BY:© Centophobia, Flickr

Page 12: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Time needs memory

(Before)CC© BY:© Centophobia, Flickr

Page 13: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Time needs memory

(After)CC© BY:© Centophobia, Flickr

Page 14: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Its complicated . . .

Page 15: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causality

(1978 http://amturing.acm.org/p558-lamport.pdf)

Page 16: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causality

A social interaction

Alice decides to have dinner.

She tells that to Bob and he agrees.

Meanwhile Chris was bored.

Bob tells Chris and he asks to join for dinner.

Page 17: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causality relation

Events get unique tags (dots), by place name and growing counter

Causally: “Alice wants dinner” ‖ “Chris is bored”Timeline: “Alice wants dinner” → “Chris is bored”

Page 18: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causality relation

How to track it?

Page 19: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causality relation

How to track it? Maybe read Vector Clock entry in Wikipedia?

(2015 https://en.wikipedia.org/wiki/Vector clock)

Maybe start with something simpler: Causal histories

Page 20: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causal histories

(1994 https://www.vs.inf.ethz.ch/publ/papers/holygrail.pdf)

Page 21: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causal histories

Collect memories as sets of unique events (dots)

Set inclusion explains causality

{a1, b1} ⊂ {a1, a2, b1}You are in my past if I know your history

If we don’t know each other’s history, we are concurrent

If our histories are the same, we are the same

Page 22: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causal histories

Page 23: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causal historiesMessage reception

Receive {a1, a2} at node b with {b1} yields {b1} ∪ {a1, a2} ∪ {b2}

Page 24: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causal historiesCausality check

Check {a1, a2} → {a1, a2, b1, b2} iff {a1, a2} ⊂ {a1, a2, b1, b2}

Page 25: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causal historiesCausality check

Check {a1, a2} → {a1, a2, b1,b2} iff {a1, a2} ⊂ {a1, a2, b1,b2}

Page 26: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causal historiesFaster causality check

Check {a1, a2} → {a1, a2, b1,b2} iff a2 ∈ {a1, a2, b1,b2}

Page 27: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causal histories

Note en ∈ {e1 . . . en, f1 . . .} implies {e1 . . . en} ⊂ {e1 . . . en, f1 . . .}

Page 28: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causal histories

Lots of redundancy than can be compressed

Page 29: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Vector clocks

1988 (https://www.vs.inf.ethz.ch/publ/papers/VirtTimeGlobStates.pdf)

(http://zoo.cs.yale.edu/classes/cs426/2012/lab/bib/fidge88timestamps.pdf)

Page 30: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Vector clocksCompacting causal histories

{a1, a2, b1, b2, b3, c1, c2, c3}{a 7→ 2, b 7→ 3, c 7→ 3}

Finally a vector, since 〈a, b, c〉 is a continuous sequence

[2, 3, 3]

Page 31: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Vector clocks

Page 32: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Vector clocksMessage reception

Set union becomes join t by point-wise maximum in vectors

Receive [2, 0, 0] at b with [0, 1, 0] yields incb(t([2, 0, 0], [0, 1, 0]))

Page 33: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Vector clocksCausality check

Check [2, 0, 0]→ [2, 2, 0] iff point-wise check 2 ≤ 2, 0 ≤ 2, 0 ≤ 0

Page 34: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Vector clocksFaster causality check

Check [2, 0, 0]→ [2, 2, 0] iff 2 ≤ 2

Page 35: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Vector clocks with dotsDecouple dot of last event

Not that easy to code bold in a PL

[2, 0, 0] becomes [1, 0, 0]a2

[2, 2, 0] becomes [2, 1, 0]b2

Now the causal past excludes the event itself

Check [2, 0, 0]→ [2, 2, 0]?

Check [1, 0, 0]a2 → [2, 1, 0]b2 iff dot a2 index 2 ≤ 2

Page 36: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Registering relevant events

Not always important to track all events

Track only change events in data replicas

Applications in:

File-SystemsDatabasesVersion Control

Page 37: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Dynamo

Causally tracking of write/put operations

(http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf)

Page 38: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causal histories with only some relevant events

Page 39: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causal histories with only some relevant events

Relevant events are marked with a • and get an unique tag/dot

Other events get a ◦ and don’t add to history

Page 40: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causal histories with only some relevant events

Concurrent states {a1} ‖ {b1} lead to a • marked merge on join

Causally dominated state {} → {a1, b1, b2} is simply replaced

Page 41: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causal histories with versions not immediately merged

Versions can be collected and merge deferred

Only when merging a new • is needed to reflect the state change

Page 42: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Version vectors

(1983 http://zoo.cs.yale.edu/classes/cs422/2013/bib/parker83detection.pdf)

Page 43: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Version vectors

Page 44: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Causality tracking mechanisms

Page 45: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Closing notes

Causality is important because time is limited

Causality is about memory of relevant events

Causal histories are very simple encodings of causality

Practical mechanisms (VCs, VVs, DVVs) do efficient encoding

Page 46: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Closing notes

When faced with a new design or mechanism: Try to think andtranslate back to a simple causal history.

(2016 http://queue.acm.org/detail.cfm?id=2917756)

Page 47: Causality is simple - haslab.uminho.pt · Causality is (moderatly) simple Carlos Baquero Univ. Minho & INESC TEC Portugal Berlin Buzzwords 2016

Closing notes, questions?

When faced with a new design or mechanism: Try to think andtranslate back to a simple causal history.

(2016 http://queue.acm.org/detail.cfm?id=2917756)

Email: [email protected], Twitter: @xmal, GitHub: CBaquero