distributed programming and consistency: principles and practice peter alvaro neil conway joseph m....

75
Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Upload: lizbeth-neal

Post on 16-Dec-2015

231 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Distributed Programming and Consistency: Principles and Practice

Peter AlvaroNeil Conway

Joseph M. HellersteinUC Berkeley

Page 2: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Part I: Principles

Page 3: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Motivation

Page 4: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Why are distributed systems hard?

UncertaintyIn communication

Page 5: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Why are distributed systems hard?

We attack at dawn

??

Page 6: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Why are distributed systems hard?

Wait for my signal Then attack!

Then attack!

Page 7: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Why are distributed systems hard?

Attack!No, WAIT!

?

Page 8: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Distributed systems are easier when messages are

Page 9: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Distributed systems are easier when messages are

• Reorderable

Page 10: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Distributed systems are easier when messages are

• Reorderable• Retryable

Page 11: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Distributed systems are easier when messages are

• Reorderable• Retryable• Retraction-free

Page 12: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

(notes)

• Point to make: convergent objects are NOT retraction-free.

Page 13: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Context: replicated distributed systems

Distributed: connected (but not always, or well)

Replicated: redundant data

Page 14: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley
Page 15: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Context: replicated distributed systems

Running example: a key-value store

put(“dinner”, “pizza”)Dinner = pizza

Dinner = pizza

Dinner = pizza

get(“dinner”)

“pizza”

Page 16: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Context: replicated distributed systems

Distributed replication is desirableDistributed consistency is expensive

Page 17: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Consistency?

Definitions abound: pick one.

but try to be consistent…

Page 18: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

What isn’t consistent?

Replication anomalies:

• Read anomalies (staleness)• Write divergence (concurrent updates)

Page 19: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Anomalies

Stale reads

put(“dinner”, “pasta”)Dinner = pizza

Dinner = pizza

Dinner = pizza

get(“dinner”)

“pizza”

Dinner = pasta Dinner = pasta

Dinner = pasta

?

Page 20: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Anomalies

Write conflicts

put(“dessert”, “cake”)Dessert = cake

Dessert = fruitput(“dessert”, “fruit”)

?

Page 21: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Consistency

Anomalies witness replication.

A consistent replicated datastore rules out (some) replication anomalies.

Page 22: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Consistency models

• Strong consistency• Eventual consistency• Weaker models

Page 23: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Strong consistency

AKA ``single copy’’ consistency

Replication is transparent; no witnesses of replication

Page 24: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Strong consistency

• Reads that could witness replication block• Concurrent writes take turns

Page 25: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Strong consistency

Some strategies:

• Single master with synchronous replication– Writes are totally ordered, reads see latest values

• Quorum systems– A (majority) ensemble simulates a single master

• ``State machine replication’’– Use consensus to establish a total order over reads

and writes systemwide

Page 26: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Strong consistency

Drawbacks:

Latency, availability, partition tolerance

Page 27: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Eventual Consistency

• Tolerate stale reads and concurrent writes• Ensure that eventually* all replicas converge

* When activity has ceased and all messages are delivered to all replicas

Page 28: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Eventual Consistency

Strategies:

• Establish a total update order off critical path (eg bayou).– Epidemic (gossip-based) replication– Tentatively apply, then possibly retract, updates as

the order is learned

Page 29: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Eventual Consistency

Strategies:

• Deliver updates according to a ``cheap’’ order (e.g. causal). – Break ties with timestamps, merge functions

hmmmm

Page 30: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Eventual Consistency

Strategies:

• Constrain the application so that updates are reorderable

Won’t always work.When will it work?

Page 31: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Eventual consistency – more definitions

• Convergence– Conflicting writes are uniformly resolved– Reads eventually return current data– State-centric

• Confluence– A program has deterministic executions• Output is a function of input

– Program-centric

Page 32: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Eventual consistency – more definitions

• Confluence is a strong correctness criterion– Not all programs are meant to be deterministic

• But it’s a nice property– E.g., for replay-based debugging– E.g., because the meaning of a program is its

output (not its ``traces’’)• Confluent => convergent

Page 33: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Eventual consistency – more definitions

Confluent => convergent

Deterministic executions imply replica agreement

Page 34: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Eventual consistency – more definitions

But convergent state does not imply deterministic executions

Page 35: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

(peter notes)

• EC systems focus only on controlling write anomalies (stale reads always fair game, though session guarantees may restrict which read anomalies can happen)

• EC systems are convergent – eventually there are no divergent states

• Deterministic => convergent (but not tother way)• Determinism is compositional: two deterministic systems

glued together make a deterministic system• Convergence is not compositional: two convergent systems

glued together do not necessarily make a convergent system (eg if the glue is NM)

Page 36: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

(peter notes)

• Guarded asynchrony – need to carefully explain the significance of this

• Essentially, confluent programs cannot allow one-shot queries on changing state (even monotonically changing)

• One-shot queries must be converted into subscriptions to a stream of updates– That way, we are guaranteed to see the last

update to a given lattice

Page 37: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

(joe notes)

• There’s stuff you can do in The storage layer…. Or you can pop up.

• Layer vs language• Sequential emulation at the storage layer• Crdts – state-centric attempt to achieve relaxed

ordering (object-by-object)• Then bloom • The programming model should match the

computation model

Page 38: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Distributed design patternsfor eventual consistency

Page 39: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

ACID 2.0The classic ACID has the goal to make the application perceive that there is exactly one computer and it is doing nothing else while this transaction is being processed.

Consider the new ACID (or ACID2.0). The letters stand for: Associative, Commutative, Idempotent, and Distributed. The goal for ACID2.0 is to succeed if the pieces of the work happen:

At least once, Anywhere in the system, In any order.

- Pat Helland,Building on quicksand

Page 40: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

ACID 2.0

• Associative -- operations can be ``eagerly’’ processed

• Commutative – operations can be reordered• Idempotent – retry is always an option• Distributed – (needed a ``D’’)

Page 41: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

ACID 2.0

Instead of low-level reads and writes programmers use an abstract vocabulary of reorderable, retryable actions:• Retry – a mechanism to ensure that all

messages are delivered• Reorderability -- ensures that all replicas

converge

Page 42: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Putting ACID 2.0 into practice

Page 43: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Putting ACID 2.0 into practice

1. CRDTs– A state-based approach– Keep distributed state in data structures

providing only ACI methods

2. Disorderly programming– A language-based approach– Encourage structuring computation using

reorderable statements and data

Page 44: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Formalizing ACID 2.0

• ACI are precisely the properties that define the LUB operation in a join semilattice

• If states form a lattice, we can always merge states using the LUB.

Page 45: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

C(v)RDTs

Convergent Replicated Datatypes

Idea: • represent state as a join semilattice. • Provide a ACI merge function

Page 46: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

CRDTs

Data structures:

1. Grow-only set (Gset)– Trivial – merge is union and union is commutative

2. 2PSet– Two Gsets – one for adds, the other for tombstones– Idiosyncrasy: you can only add/delete once.

3. Counters1. Tricky! Vector clock with an entry for each replica2. Increment @ replica I => VC[i] += 13. Value: sum of all VC values

Page 47: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

CRDTs

Difficulties:

Convergent objects alone are not strong enough to build confluent systems.

Page 48: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Asynchronous messaging

You never really know

Page 49: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Asynchronous messaging

A B

C sendA B

C

Page 50: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Monotonic Logic

The more you know, the more you know.

Page 51: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Monotonic Logic

A B

C

E

D

A

C

E

select/filter

Page 52: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Monotonic Logic

A B

C project /map

f(A) f(B)

f(C)

Page 53: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Monotonic Logic

A BC D E

B

D

B

Djoin / compose

F

Page 54: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Monotonic Logic is order-insensitive

A B

C

E

D

A

C

E

Page 55: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Monotonic Logic is pipelineable

A B

C

E

D

A

C

E

Page 56: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Nonmonotonic Logic

When do you know for sure?

Page 57: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Nonmonotonic Logic

A BC D E

B

D

set minus A B

CD

E

Retraction!

Retraction!

X

Y

Z

Page 58: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Nonmonotonic logic is order-sensitive

A BC D E

B

D

set minus A

C E

Page 59: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Nonmonotonic logic is blocking

A

set minus A ?

A?

Page 60: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Nonmonotonic logic is blocking

A

set minusA?

``Sealed’’

Page 61: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

CALM Analysis

• Asynchrony => loss of order• Nonmonotonicity => order-sensitivity• Asynchrony ; Nonmonotonicity =>

Inconsistency

[…]

Page 62: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

CALM Analysis

• Asynchrony => loss of order• Nonmonotonicity => order-sensitivity• Asynchrony ; Nonmonotonicity =>

Inconsistency

?

``Point of Order’’

[…]

Page 63: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Disorderly programming

An aside about logic programming:

In (classical) logic, theories are • Associative and commutative– Consequences are the same regardless of the

order in which we make deductions• Idempotent– Axioms can be reiterated freely

Page 64: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Disorderly programming

An aside about logic programming:

In (classical) logic, theories are Associative, Commutative, and Idempotent because

Knowledge is monotonic:

The more you know, the more you know

Page 65: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Disorderly programming

An aside about logic programming:

It is challenging to even talk about order in logic programming languages [dedalus].

Yet we can build …

Page 66: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Disorderly programming

Idea: embody the ACID 2.0 design patterns in how we structure distributed programs.

Disorderly data: unordered relationsDisorderly code: specify how data changes over time

Page 67: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Bloom

Page 68: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Bloom Rules do |mes, mem| [mem.address, mes.id, mes.payload]end

multicast <~ (message * members)

Page 69: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Operational model

Page 70: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Time

Set(Union)

Integer(Max)

Boolean(Or)

“Growth”:Larger Sets

“Growth”:Larger Numbers

“Growth”:false true

Page 71: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Time

Set(merge = Union)

Integer(merge = Max)

Boolean(merge = Or)

size() >= 5

Monotone functionfrom set max

Monotone functionfrom max boolean

Page 72: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

72

Builtin LatticesName Description ? a t b Sample Monotone

Functions

lbool Threshold test false a ∨ b when_true() ! v

lmax Increasing number

1 max(a,b)

gt(n) ! lbool+(n) ! lmax-(n) ! lmax

lmin Decreasing number

−1 min(a,b)

lt(n) ! lbool

lset Set of values ; a [ b intersect(lset) ! lsetproduct(lset) ! lset

contains?(v) ! lboolsize() ! lmax

lpset Non-negative set

; a [ b sum() ! lmax

lbag Multiset of values

; a [ b mult(v) ! lmax+(lbag) ! lbag

lmap Map from keys to lattice values

empty

map

at(v) ! any-latintersect(lmap) ! lmap

Page 73: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

73

Quorum Vote in BloomL

QUORUM_SIZE = 5RESULT_ADDR = "example.org"

class QuorumVote include Bud

state do channel :vote_chn, [:@addr, :voter_id] channel :result_chn, [:@addr] lset :votes lmax :vote_cnt lbool :got_quorum end

bloom do votes <= vote_chn {|v| v.voter_id} vote_cnt <= votes.size got_quorum <= vote_cnt.gt_eq(QUORUM_SIZE) result_chn <~ got_quorum.when_true { [RESULT_ADDR] } endend

Map set ! max

Map max ! bool

Threshold test on bool

Lattice state declarations

Communication interfaces

Accumulate votesinto set

Annotated Ruby class

Program state

Program logic

Merge function for set lattice

Page 74: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

Convergence – a 2PSet

Page 75: Distributed Programming and Consistency: Principles and Practice Peter Alvaro Neil Conway Joseph M. Hellerstein UC Berkeley

The difficulty with queries

``The work of multiple transactions can interleave as long as they are doing the commutative operations. If any transaction dares to READ the value, that does not commute, is annoying, and stops other concurrent work.’’ -- Pat Helland