81
Blazes: coordination analysis for distributed program Peter Alvaro, Neil Conway, Joseph M. Hellerstein David Maier UC Berkeley Portland State

Blazes: coordination analysis for distributed programs

  • Upload
    palvaro

  • View
    12.101

  • Download
    1

Embed Size (px)

DESCRIPTION

Slides from ICDE'14

Citation preview

Page 1: Blazes: coordination analysis for distributed programs

Blazes: coordination analysis for distributed program

Peter Alvaro, Neil Conway, Joseph M. Hellerstein David Maier UC Berkeley Portland State

Page 2: Blazes: coordination analysis for distributed programs

Distributed systems are hard

Asynchrony Partial Failure

Page 3: Blazes: coordination analysis for distributed programs

Asynchrony isn’t that hard

Logical timestamps Deterministic interleaving

Ameloriation:

Page 4: Blazes: coordination analysis for distributed programs

Partial failure isn’t that hard

Replication Replay

Ameloriation:

Page 5: Blazes: coordination analysis for distributed programs

Asynchrony * partial failure is hard2

Logical timestamps Deterministic interleaving

Replication Replay

Page 6: Blazes: coordination analysis for distributed programs

Asynchrony * partial failure is hard2

Replication Replay

Today: Consistency criteria for fault-tolerant distributed systems Blazes: analysis and enforcement

Page 7: Blazes: coordination analysis for distributed programs

This talk is all setup Frame of mind: 1.  Dataflow: a model of distributed computation 2.  Anomalies: what can go wrong? 3.  Remediation strategies

1.  Component properties 2.  Delivery mechanisms

Framework: Blazes – coordination analysis and synthesis

Page 8: Blazes: coordination analysis for distributed programs

Little boxes: the dataflow model

Generalization of distributed services Components interact via asynchronous calls (streams)

Page 9: Blazes: coordination analysis for distributed programs

Components

Input  interfaces   Output  interface  

Page 10: Blazes: coordination analysis for distributed programs

Streams

Nondeterministic order

Page 11: Blazes: coordination analysis for distributed programs

Example: a join operator

R

S T

Page 12: Blazes: coordination analysis for distributed programs

Example: a key/value store

put

get response

Page 13: Blazes: coordination analysis for distributed programs

Example: a pub/sub service

publish

subscribe deliver

Page 14: Blazes: coordination analysis for distributed programs

Logical dataflow

“Software architecture”

Data source

client

Service X filter cache

c

a

b

Page 15: Blazes: coordination analysis for distributed programs

Dataflow is compositional

Data source

client

Service X filter aggregator

Page 16: Blazes: coordination analysis for distributed programs

Dataflow is compositional

Components are recursively defined

Page 17: Blazes: coordination analysis for distributed programs

Dataflow exhibits self-similarity

c

q r

Buffer

Buffer

group/count

Page 18: Blazes: coordination analysis for distributed programs

Dataflow exhibits self-similarity

DB   HDFS  

Hadoop  

Index   Combine  

Sta:c  HTTP  App1  

App2  

Buy  

Content  

User  requests  

App1    answers  

App2  answers  

Page 19: Blazes: coordination analysis for distributed programs

Physical dataflow

Page 20: Blazes: coordination analysis for distributed programs

Physical dataflow

Data source

client

Service X filter aggregator

c

a

b

Page 21: Blazes: coordination analysis for distributed programs

Physical dataflow

Data source

Service X filter

aggregator

client “System architecture”

Page 22: Blazes: coordination analysis for distributed programs

What could go wrong?

Page 23: Blazes: coordination analysis for distributed programs

Cross-run nondeterminism

Data source

client

Service X filter aggregator

c

a

b

Run 1

Nondeterministic replays

Page 24: Blazes: coordination analysis for distributed programs

Cross-run nondeterminism

Data source

client

Service X filter aggregator

c

a

b

Run 1

Nondeterministic replays

Page 25: Blazes: coordination analysis for distributed programs

Cross-run nondeterminism

Data source

client

Service X filter aggregator

c

a

b

Nondeterministic replays

Run 2

Page 26: Blazes: coordination analysis for distributed programs

Cross-run nondeterminism

Data source

client

Service X filter aggregator

c

a

b

Nondeterministic replays

Run 2

Page 27: Blazes: coordination analysis for distributed programs

Cross-instance nondeterminism

Data  source  

Service  X  

client  

Transient replica disagreement

Page 28: Blazes: coordination analysis for distributed programs

Cross-instance nondeterminism

Data  source  

Service  X  

client  

Transient replica disagreement

Page 29: Blazes: coordination analysis for distributed programs

Divergence

Data  source  

Service  X  

client  

Permanent replica disagreement

Page 30: Blazes: coordination analysis for distributed programs

Divergence

Data  source  

Service  X  

client  

Permanent replica disagreement

Page 31: Blazes: coordination analysis for distributed programs

Divergence

Data  source  

Service  X  

client  

Permanent replica disagreement

Page 32: Blazes: coordination analysis for distributed programs

Divergence

Data  source  

Service  X  

client  

Permanent replica disagreement

Page 33: Blazes: coordination analysis for distributed programs

Hazards

Data  source  

client  

Service  X   filter   aggregator  c  

a  

b  

Order à Contents?

Page 34: Blazes: coordination analysis for distributed programs

Preventing the anomalies

1.  Understand component semantics (And disallow certain compositions)

Page 35: Blazes: coordination analysis for distributed programs

Component properties

•  Convergence – Component replicas receiving the same

messages reach the same state – Rules out divergence

Page 36: Blazes: coordination analysis for distributed programs

Insert   Read  

Convergent data structure (e.g., Set CRDT)

Convergence

Insert   Read  

Commutativity Associativity Idempotence

Page 37: Blazes: coordination analysis for distributed programs

Insert   Read  

Convergent data structure (e.g., Set CRDT)

Convergence

Insert   Read  

Commutativity Associativity Idempotence

Page 38: Blazes: coordination analysis for distributed programs

Insert   Read  

Convergent data structure (e.g., Set CRDT)

Convergence

Insert   Read  

Commutativity Associativity Idempotence

Page 39: Blazes: coordination analysis for distributed programs

Insert   Read  

Convergent data structure (e.g., Set CRDT)

Convergence

Insert   Read  

Commutativity Associativity Idempotence

Reordering Batching Retry/duplication

Tolerant to

Page 40: Blazes: coordination analysis for distributed programs

Convergence isn’t compositional

Data  source  

client  

Convergent (identical input contents è identical state)

Page 41: Blazes: coordination analysis for distributed programs

Convergence isn’t compositional

Data  source  

client  

Convergent (identical input contents è identical state)

Page 42: Blazes: coordination analysis for distributed programs

Convergence isn’t compositional

Data  source  

client  

Convergent (identical input contents è identical state)

Page 43: Blazes: coordination analysis for distributed programs

Component properties

•  Convergence – Component replicas receiving the same

messages reach the same state – Rules out divergence

•  Confluence – Output streams have deterministic contents – Rules out all stream anomalies

Confluent è convergent

Page 44: Blazes: coordination analysis for distributed programs

Confluence

Page 45: Blazes: coordination analysis for distributed programs

Confluence

Page 46: Blazes: coordination analysis for distributed programs

Confluence

Page 47: Blazes: coordination analysis for distributed programs

Confluence

Page 48: Blazes: coordination analysis for distributed programs

Confluence

=  

Page 49: Blazes: coordination analysis for distributed programs

Confluence

output  set  =  f(input  set)      

{                }  

{                }  =  

Page 50: Blazes: coordination analysis for distributed programs

Confluence is compositional

output  set  =  f  �  g(input  set)      

Page 51: Blazes: coordination analysis for distributed programs

Confluence is compositional

output  set  =  f  �  g(input  set)      

Page 52: Blazes: coordination analysis for distributed programs

Preventing the anomalies

1.  Understand component semantics (And disallow certain compositions)

2.  Constrain message delivery orders 1.  Ordering

Page 53: Blazes: coordination analysis for distributed programs

Ordering – global coordination

Determinis:c  outputs  

Order-sensitive

Page 54: Blazes: coordination analysis for distributed programs

Ordering – global coordination

Data  source  

client  

The first principle of successful scalability is to batter the consistency mechanisms down to a minimum. – James Hamilton  

Page 55: Blazes: coordination analysis for distributed programs

Preventing the anomalies

1.  Understand component semantics (And disallow certain compositions)

2.  Constrain message delivery orders 1.  Ordering 2.  Barriers and sealing

Page 56: Blazes: coordination analysis for distributed programs

Barriers – local coordination

Determinis:c  outputs  

Data source

client Order-sensitive

Page 57: Blazes: coordination analysis for distributed programs

Barriers – local coordination

Data source

client

Page 58: Blazes: coordination analysis for distributed programs

Sealing – continuous barriers

Do partitions of (infinite) input streams “end”? Can components produce deterministic results given “complete” input partitions?

Sealing: partition barriers for infinite streams

Page 59: Blazes: coordination analysis for distributed programs

Sealing – continuous barriers

Finite partitions of infinite inputs are common …in distributed systems

–  Sessions –  Transactions –  Epochs / views

…and applications –  Auctions –  Chats –  Shopping carts

Page 60: Blazes: coordination analysis for distributed programs

Blazes:

consistency analysis

+

coordination selection

Page 61: Blazes: coordination analysis for distributed programs

Blazes:

Mode 1: Grey boxes

Page 62: Blazes: coordination analysis for distributed programs

Grey boxes

Example: pub/sub x = publish y = subscribe z = deliver

x  

y  z  

Determinis:c  but  unordered  

Severity Label Confluent Stateless

1 CR X X

2 CW X

3 ORgate X

4 OWgate

x->z : CW y->z : CWT

Page 63: Blazes: coordination analysis for distributed programs

Grey boxes

Example: key/value store

x = put; y = get; z = response

x  

y  z  

Determinis:c  but  unordered  

Severity Label Confluent Stateless

1 CR X X

2 CW X

3 ORgate X

4 OWgate

x->z : OWkey y->z : ORT

Page 64: Blazes: coordination analysis for distributed programs

Label propagation – confluent composition

CW   CR  

CR  

CR  

CR  

Page 65: Blazes: coordination analysis for distributed programs

Label propagation – confluent composition

CW   CR  

CR  

CR  

CR  Determinis:c  outputs  

Page 66: Blazes: coordination analysis for distributed programs

Label propagation – confluent composition

CW   CR  

CR  

CR  

CR  Determinis:c  outputs  

CW  

Page 67: Blazes: coordination analysis for distributed programs

Label propagation – unsafe composition

OW   CR  

CR  

CR  

CR  

Page 68: Blazes: coordination analysis for distributed programs

Label propagation – unsafe composition

OW   CR  

CR  

CR  

CR  Tainted  outputs  

Page 69: Blazes: coordination analysis for distributed programs

Label propagation – unsafe composition

OW   CR  

CR  

CR  

CR  Tainted  outputs  

Interposi:on  point  

Page 70: Blazes: coordination analysis for distributed programs

Label propagation – sealing

OWkey   CR  

CR  

CR  

CR  

Seal(key=x)  Seal(key=x)  

Page 71: Blazes: coordination analysis for distributed programs

Label propagation – sealing

OWkey   CR  

CR  

CR  

CR  Determinis:c  outputs  

Seal(key=x)  Seal(key=x)  

Page 72: Blazes: coordination analysis for distributed programs

Label propagation – sealing

OWkey   CR  

CR  

CR  

CR  Determinis:c  outputs  

OWkey  Seal(key=x)  

Seal(key=x)  

Page 73: Blazes: coordination analysis for distributed programs

Blazes:

Mode 1: White boxes

Page 74: Blazes: coordination analysis for distributed programs

white boxes module KVS! state do! interface input, :put, [:key, :val]! interface input, :get, [:ident, :key]! interface output, :response, ! ! ! ! ! ! !!

! ! ! ![:response_id, :key, :val]! table :log, [:key, :val]! end! bloom do! log <+ put! log <- (put * log).rights(:key => :key)! response <= (log * get).pairs(:key=>:key) do |s,l| !

! ![l.ident, s.key, s.val]!! end!

end!end

Page 75: Blazes: coordination analysis for distributed programs

white boxes module KVS! state do! interface input, :put, [:key, :val]! interface input, :get, [:ident, :key]! interface output, :response, ! ! ! ! ! ! !!

! ! ! ![:response_id, :key, :val]! table :log, [:key, :val]! end! bloom do! log <+ put! log <- (put * log).rights(:key => :key)! response <= (log * get).pairs(:key=>:key) do |s,l| !

! ![l.ident, s.key, s.val]!! end!

end!end Negation (à order sensitive)

Page 76: Blazes: coordination analysis for distributed programs

white boxes module KVS! state do! interface input, :put, [:key, :val]! interface input, :get, [:ident, :key]! interface output, :response, ! ! ! ! ! ! !!

! ! ! ![:response_id, :key, :val]! table :log, [:key, :val]! end! bloom do! log <+ put! log <- (put * log).rights(:key => :key)! response <= (log * get).pairs(:key=>:key) do |s,l| !

! ![l.ident, s.key, s.val]!! end!

end!end Negation (à order sensitive)

Partitioned by :key

Page 77: Blazes: coordination analysis for distributed programs

white boxes module KVS! state do! interface input, :put, [:key, :val]! interface input, :get, [:ident, :key]! interface output, :response, ! ! ! ! ! ! !!

! ! ! ![:response_id, :key, :val]! table :log, [:key, :val]! end! bloom do! log <+ put! log <- (put * log).rights(:key => :key)! response <= (log * get).pairs(:key=>:key) do |s,l| !

! ![l.ident, s.key, s.val]!! end!

end!end

put  àresponse:  OWkey  get  à  response:  ORkey  

Negation (à order sensitive)

Partitioned by :key

Page 78: Blazes: coordination analysis for distributed programs

white boxes module PubSub! state do! interface input, :publish, [:key, :val]! interface input, :subscribe, [:ident, :key]! interface output, :response, ! ! ! ! ! ! !!

! ! ! ![:response_id, :key, :val]! table :log, [:key, :val]! table :sub_log, [:ident, :key]! end! bloom do! log <= publish!

!sub_log <= subscribe!!response <= (log * sub_log).pairs(:key=>:key) do |s,l| !! ![l.ident, s.key, s.val]!! end!

end!end

publish  à  response:  CW  subscribe  à  response:  CR  

Page 79: Blazes: coordination analysis for distributed programs

white boxes module PubSub! state do! interface input, :publish, [:key, :val]! interface input, :subscribe, [:ident, :key]! interface output, :response, ! ! ! ! ! ! !!

! ! ! ![:response_id, :key, :val]! table :log, [:key, :val]! table :sub_log, [:ident, :key]! end! bloom do! log <= publish!

!sub_log <= subscribe!!response <= (log * sub_log).pairs(:key=>:key) do |s,l| !! ![l.ident, s.key, s.val]!! end!

end!end

Page 80: Blazes: coordination analysis for distributed programs

The Blazes frame of mind:

•  Asynchronous dataflow model •  Focus on consistency of data in motion – Component semantics – Delivery mechanisms and costs

•  Automatic, minimal coordination

Page 81: Blazes: coordination analysis for distributed programs

Queries?