Avoiding Coordination Announcements O ffi ce Hours No office hours - - PowerPoint PPT Presentation

avoiding coordination announcements o ffi ce hours
SMART_READER_LITE
LIVE PREVIEW

Avoiding Coordination Announcements O ffi ce Hours No office hours - - PowerPoint PPT Presentation

Avoiding Coordination Announcements O ffi ce Hours No office hours on 11/15: I am not here. No office hours on 11/22: Everyone should be out having and . No office hours on 11/29: I am not here. E-mail me if you want to


slide-1
SLIDE 1

Avoiding Coordination

slide-2
SLIDE 2

Announcements

slide-3
SLIDE 3

Office Hours

  • No office hours on 11/15: I am not here.
  • No office hours on 11/22: Everyone should be out having 🥨 and 🦄.
  • No office hours on 11/29: I am not here.
  • E-mail me if you want to meet/need help.
  • Probably going to be over Skype or some such medium.
  • Or in person on 11/26 or 11/27.
slide-4
SLIDE 4

Final Project

  • Hopefully everyone has started...
  • ... at least thinking about the project.
  • Remember: no extensions or late days -- must receive final report on Dec 12.
slide-5
SLIDE 5

Onto Science...

slide-6
SLIDE 6

So Far...

  • Looked at mechanisms to achieve consensus, get machines to work together.
  • A few different algorithms, a few different failure conditions.
  • Powerful primitive: can replicate any deterministic state machine.
  • Don't even need to implement or understand consensus to do this.
  • Powerful abstraction: replicate most programs, get fault tolerance.
slide-7
SLIDE 7

So Far...

  • But everything is not rosy:
  • Configure and initialize system for correctness.
  • Need to communicate and wait before responding to any request.
  • Can we do better?
slide-8
SLIDE 8

Yes‽

slide-9
SLIDE 9

Self Stabilizing Algorithms

slide-10
SLIDE 10

Setting

  • Treat program as transition machine.
slide-11
SLIDE 11

Setting

  • Treat program as transition machine.
  • Where some states are good.
slide-12
SLIDE 12

Setting

  • Treat program as transition machine.
  • Where some states are good.
  • All transitions from good states go to good.
slide-13
SLIDE 13

Setting

  • Treat program as transition machine.
  • Where some states are good.
  • All transitions from good states go to good.
  • Self-stabilization:
  • From any state arrive at good state.
  • In bounded steps.
slide-14
SLIDE 14

Setting

  • Treat program as transition machine.
  • Where some states are good.
  • All transitions from good states go to good.
  • Self-stabilization:
  • From any state arrive at good state.
  • In bounded steps.
slide-15
SLIDE 15

Djikstra's Example

  • Mutual exclusion: only one process gets to write (or compute) at a time.

1 2 3 4

x0 x1 x2 x3 x4

slide-16
SLIDE 16

Djikstra's Example

  • Mutual exclusion: only one process gets to write (or compute) at a time.

1 2 3 4

x0 x1 x2 x3 x4

At process 0 do { if (x4 == x0) { x0 = (x0 + 1) % 5; } } while (true); At process n do { if (xn != xn-1) { xn = xn-1; } } while (true);

slide-17
SLIDE 17

Djikstra's Example

  • When and why can this provide mutual exclusion?

1 2 3 4

x0 x1 x2 x3 x4

At process 0 do { if (x4 == x0) { x0 = (x0 + 1) % 5; } } while (true); At process n do { if (xn != xn-1) { xn = xn-1; } } while (true);

slide-18
SLIDE 18

Djikstra's Example

1 2 3 4

x0=1 x1=1 x2=1 x3=1 x4=1

At process 0 do { if (x4 == x0) { x0 = (x0 + 1) % 5; } } while (true); At process n do { if (xn != xn-1) { xn = xn-1; } } while (true);

slide-19
SLIDE 19

Djikstra's Example

1 2 3 4

x0=2 x1=1 x2=1 x3=1 x4=1

At process 0 do { if (x4 == x0) { x0 = (x0 + 1) % 5; } } while (true); At process n do { if (xn != xn-1) { xn = xn-1; } } while (true);

slide-20
SLIDE 20

Djikstra's Example

1 2 3 4

x0=2 x1=2 x2=1 x3=1 x4=1

At process 0 do { if (x4 == x0) { x0 = (x0 + 1) % 5; } } while (true); At process n do { if (xn != xn-1) { xn = xn-1; } } while (true);

slide-21
SLIDE 21

Djikstra's Example

1 2 3 4

x0=2 x1=2 x2=2 x3=1 x4=1

At process 0 do { if (x4 == x0) { x0 = (x0 + 1) % 5; } } while (true); At process n do { if (xn != xn-1) { xn = xn-1; } } while (true);

slide-22
SLIDE 22

Djikstra's Example

1 2 3 4

x0=2 x1=2 x2=2 x3=2 x4=2

At process 0 do { if (x4 == x0) { x0 = (x0 + 1) % 5; } } while (true); At process n do { if (xn != xn-1) { xn = xn-1; } } while (true);

slide-23
SLIDE 23

Djikstra's Example

1 2 3 4

x0=1 x1=2 x2=3 x3=4 x4=0

At process 0 do { if (x4 == x0) { x0 = (x0 + 1) % 5; } } while (true); At process n do { if (xn != xn-1) { xn = xn-1; } } while (true);

What happens with random initial values?

slide-24
SLIDE 24

Djikstra's Example

  • Assuming a fair execution.
  • Lemma 1: At least every n rounds x0 changes its value.
  • Round here is every processor got a chance to run.
  • Why?

1 2 3 4

x0=1 x1=2 x2=3 x3=4 x4=0

At process 0 do { if (x4 == x0) { x0 = (x0 + 1) % 5; } } while (true); At process n do { if (xn != xn-1) { xn = xn-1; } } while (true);

slide-25
SLIDE 25

Djikstra's Example

  • Assuming a fair execution.
  • Lemma 1: At least every n rounds x0 changes its value.
  • Lemma 2: There is some value c in 0..(n+1) s.t. xi ≠ c ∀i
  • Why?

1 2 3 4

x0=1 x1=2 x2=3 x3=4 x4=0

At process 0 do { if (x4 == x0) { x0 = (x0 + 1) % 5; } } while (true); At process n do { if (xn != xn-1) { xn = xn-1; } } while (true);

slide-26
SLIDE 26

Djikstra's Example

  • Assuming a fair execution.
  • Lemma 1: At least every n rounds x0 changes its value.
  • Lemma 2: There is some value c in 0..(n+1) s.t. xi ≠ c ∀i
  • Theorem: Get to all xis being equal in O(n2) rounds.
  • Why?

1 2 3 4

x0=1 x1=2 x2=3 x3=4 x4=0

At process 0 do { if (x4 == x0) { x0 = (x0 + 1) % 5; } } while (true); At process n do { if (xn != xn-1) { xn = xn-1; } } while (true);

slide-27
SLIDE 27

Other Self Stabilizing Algorithms?

slide-28
SLIDE 28

Finding a Minimal Spanning Tree

slide-29
SLIDE 29

Thoughts on how?

slide-30
SLIDE 30

d=0

At root do { for n in nbr { send(n, <d=0, parent=false>) } } } while (true); At process n do { n[i], parent = recv(nbr i) d = min(n) parent = find(i s.t. n[i] = d-1) send(parent, <d=d, parent=true>) for n in nbr { if n!= parent { send(n, <d = d, parent=false>) } } } while (true);

Finding a Minimal Spanning Tree

slide-31
SLIDE 31

d=0

Why does this work?

d=8 d=100

Finding a Minimal Spanning Tree

d=22

slide-32
SLIDE 32

d=0

Why does this work?

d=8 d=100

Finding a Minimal Spanning Tree

d=22 d=1 d=1 d=23 d=2 d=2 d=2 d=3

slide-33
SLIDE 33

Maximal Matching

slide-34
SLIDE 34

How?

slide-35
SLIDE 35

partner = null do { broadcast(id, partner) collect partners for id if partner = null and exists j s.t. partners[j]=id { partner = j } if partner = null and exists j s.t. partners[j] = null { partner = j } if partner = j and partners[j] != id { partner = null } } while (true);

slide-36
SLIDE 36

Why?

slide-37
SLIDE 37

CRDTs

slide-38
SLIDE 38

Revisiting RSMs

Application Application Application Application Ordering Ordering Ordering Ordering

Client Client Client Client

slide-39
SLIDE 39

What if we didn't care about ordering

Application Application Application Application Gossip Gossip Gossip Gossip

Client Client Client Client

slide-40
SLIDE 40

Challenge: Ensuring correctness despite reordering

slide-41
SLIDE 41

Challenge

Peer 0 Peer 1 Peer 2 Peer 3 X Y Z A merge(X, Y) merge(Z, X) merge(Y, Z) merge(X, A) m(Y,m(Z, X)) m(A,m(X, Y)) m(X,m(Y, Z)) m(Y,m(X, A)) m(A, m(Y,m(Z, X))) m(Z, m(A,m(X, Y))) m(A, m(X,m(Y, Z))) m(Z, m(Y, m(X, A)))

slide-42
SLIDE 42

Challenge

Peer 0 Peer 1 Peer 2 Peer 3 X Y Z A merge(X, Y) merge(Z, X) merge(Y, Z) merge(X, A) m(Y,m(Z, X)) m(A,m(X, Y)) m(X,m(Y, Z)) m(Y,m(X, A)) m(A, m(Y,m(Z, X))) m(Z, m(A,m(X, Y))) m(A, m(X,m(Y, Z))) m(Z, m(Y, m(X, A))) Need all of these to be equal.

slide-43
SLIDE 43

Modelling a Merge Function

  • Treat updates as a set.
  • For previous example {A, X, Y, Z}
  • Define merge function to be the least upper bound (similar to supremum).
  • Commutative, associative and idempotent.
  • Thus LUB(A, LUB(X, LUB(Y, Z)))) = LUB(X, LUB(A, LUB(Y, Z)))) = ...
  • In abstract algebra posets with LUBs are called semilattices.
slide-44
SLIDE 44

Is this enough?

slide-45
SLIDE 45

Modelling a Merge Function

  • Sufficient for consistency.
  • Not sufficient to make sure all semantics are preserved.
  • In particular picking the least upper bound might loose operations.
slide-46
SLIDE 46

Counters

Peer 0 Peer 1 Peer 3 x = [0, 0, 0] x = [0, 0, 0] x = [0, 0, 0] +

  • x = [1, 0, 0]

x = [0, 0, -1] Suppose we use element wise max as LUB. Is element wise max a LUB?

slide-47
SLIDE 47

Counters

Peer 0 Peer 1 Peer 3 +

  • Suppose we use element wise max as LUB.

Is element wise max a LUB? x = LUB([1, 0, 0], [0,0,0], [0,0, -1]) x = LUB([1, 0, 0], [0,0,0], [0,0, -1]) x = LUB([1, 0, 0], [0,0,0], [0,0, -1]) x = [1, 0, 0] x = [1, 0, 0] x = [1, 0, 0]

slide-48
SLIDE 48

Modelling a Merge Function

  • Need it to be a least upper bound for the state which is a semilattice.
  • Need LUB to be monotonic.
  • Each application preserves more information.
slide-49
SLIDE 49

Build a Collaborative Editor using CRDTs

slide-50
SLIDE 50

It was the best of times, it was the poohest of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of credulity, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness

worst belief very

slide-51
SLIDE 51

i t _ w a s _ t h e _ p

  • h

e s t _

slide-52
SLIDE 52

i t _ w a s _ t h e _ p

  • h

e s t _ w r v e r y _

slide-53
SLIDE 53

Sometimes it fails.

slide-54
SLIDE 54

What consistency guarantees do both of today's mechanisms provide?

slide-55
SLIDE 55

When are these good?