Declarative,
Secure,
Convergent
Edge Computation
Christopher Meiklejohn
Université catholique de Louvain, Belgium
1
Slide 2
Slide 2 text
Internet of Things
2
Slide 3
Slide 3 text
Internet of Things
2
but, more generally…
Slide 4
Slide 4 text
Edge Computation
• Logical extremes
Pushing both computation and data to the logical
extremes of the network
3
Slide 5
Slide 5 text
Edge Computation
• Logical extremes
Pushing both computation and data to the logical
extremes of the network
• Arbitrary computation
Support arbitrary computations regardless of
location of data in the network
3
Slide 6
Slide 6 text
Edge Computation
• Logical extremes
Pushing both computation and data to the logical
extremes of the network
• Arbitrary computation
Support arbitrary computations regardless of
location of data in the network
• Self-organizing, resilient
Directed diffusion, Cornell circa-1990; self-organizing
systems that coordinate to complete computations
3
Slide 7
Slide 7 text
Example Application
Hospital Refrigerators
4
Slide 8
Slide 8 text
Hospital Refrigerators
Typical Topology
5
Slide 9
Slide 9 text
6
Slide 10
Slide 10 text
Internet
7
Slide 11
Slide 11 text
Internet HDFS
8
Slide 12
Slide 12 text
Internet HDFS
Hadoop
Client
Client
Internet
9
Slide 13
Slide 13 text
Internet HDFS
Spark
Client
Client
Internet
10
Slide 14
Slide 14 text
Hospital Refrigerators
Ideal Execution
11
Slide 15
Slide 15 text
Internet HDFS
Spark
12
Slide 16
Slide 16 text
Internet HDFS
Spark
13
Slide 17
Slide 17 text
Internet HDFS
Spark
14
Slide 18
Slide 18 text
Internet HDFS
Spark
15
Slide 19
Slide 19 text
Internet HDFS
Spark
16
Slide 20
Slide 20 text
Client
Internet HDFS
Spark
17
Slide 21
Slide 21 text
Problem
Connectivity
18
Slide 22
Slide 22 text
Internet HDFS
Spark
19
Slide 23
Slide 23 text
Internet HDFS
Spark
20
Slide 24
Slide 24 text
Internet HDFS
Spark
21
Slide 25
Slide 25 text
Internet HDFS
Spark
22
Slide 26
Slide 26 text
Internet HDFS
Spark
23
Slide 27
Slide 27 text
Internet HDFS
Spark
24
Slide 28
Slide 28 text
Internet HDFS
Spark
25
Slide 29
Slide 29 text
Solution
Local Decisions
26
Slide 30
Slide 30 text
Internet HDFS
Spark
27
Slide 31
Slide 31 text
Internet HDFS
Spark
28
Slide 32
Slide 32 text
Internet HDFS
Spark
29
Slide 33
Slide 33 text
Internet HDFS
Spark
30
Slide 34
Slide 34 text
Internet HDFS
Spark
31
Slide 35
Slide 35 text
Local Decisions
• Not new for backup (80s-90s)
Backup communication mechanisms for
critical systems; POTS backup for ISDN,
etc.
32
Slide 36
Slide 36 text
Local Decisions
• Not new for backup (80s-90s)
Backup communication mechanisms for
critical systems; POTS backup for ISDN,
etc.
• Not new for storage (90s-00s)
EMC’s “phone home” via POTS when
disks failed in NAS devices to signal for
replacement unit
32
Slide 37
Slide 37 text
Solution
Transitive Dissemination
33
Slide 38
Slide 38 text
Internet HDFS
Spark
34
Slide 39
Slide 39 text
Internet HDFS
Spark
35
Slide 40
Slide 40 text
Internet HDFS
Spark
36
Slide 41
Slide 41 text
Internet HDFS
Spark
37
Slide 42
Slide 42 text
Internet HDFS
Spark
38
Slide 43
Slide 43 text
Internet HDFS
Spark Client
39
Slide 44
Slide 44 text
Problem
State Transmission
40
Slide 45
Slide 45 text
Internet
41
Slide 46
Slide 46 text
Internet
42
Slide 47
Slide 47 text
Internet
43
Slide 48
Slide 48 text
Internet
44
Slide 49
Slide 49 text
Solution
Aggregate Dissemination
45
Slide 50
Slide 50 text
Internet
46
Slide 51
Slide 51 text
Internet
47
Slide 52
Slide 52 text
Internet
48
Slide 53
Slide 53 text
Internet HDFS
49
Slide 54
Slide 54 text
Internet
= =
HDFS
50
Slide 55
Slide 55 text
Internet ?
= =
51
Slide 56
Slide 56 text
Internet ?
= =
52
Slide 57
Slide 57 text
Local Computation
• Reduce state transmission
Perform some local computation to
reduce transmitted state on the wire
53
Slide 58
Slide 58 text
Local Computation
• Reduce state transmission
Perform some local computation to
reduce transmitted state on the wire
• Make local decisions
Make decisions based on results of
local computation
53
Slide 59
Slide 59 text
Databases
Consistency Models
54
Slide 60
Slide 60 text
Databases
Strong Consistency
55
Slide 61
Slide 61 text
R1
C1 C2
56
Slide 62
Slide 62 text
R1
C1 C2
57
Slide 63
Slide 63 text
R1
C1 C2
Read
58
Slide 64
Slide 64 text
R1
C1 C2
Read
59
Slide 65
Slide 65 text
R1
C1 C2
60
Slide 66
Slide 66 text
R1
C1 C2
CAS
61
Slide 67
Slide 67 text
R1
C1 C2
62
Slide 68
Slide 68 text
R1
C1 C2
CAS
63
Slide 69
Slide 69 text
I won’t diagram
the Paxos protocol
64
Slide 70
Slide 70 text
R2
C1 C2
Value 2 Value 1
Value 2
R1 R3
Paxos
65
Slide 71
Slide 71 text
Databases
Eventual Consistency
66
Slide 72
Slide 72 text
R1 R2 R3
C1 C2
67
Slide 73
Slide 73 text
R1 R2 R3
C1 C2
68
Slide 74
Slide 74 text
R1 R2 R3
C1 C2
Read
69
Slide 75
Slide 75 text
R1 R2 R3
C1 C2
Read
70
Slide 76
Slide 76 text
R1 R2 R3
C1 C2
Write
71
Slide 77
Slide 77 text
R1 R2 R3
C1 C2
Write
72
Slide 78
Slide 78 text
R1 R2 R3
C1 C2
Write
C1
73
Slide 79
Slide 79 text
R1 R2 R3
C1 C2
Read
74
Slide 80
Slide 80 text
R1 R2 R3
C1 C2
Write
75
Slide 81
Slide 81 text
Eventual Consistency
As The Model
76
Slide 82
Slide 82 text
Clients
Own Their Data
77
Slide 83
Slide 83 text
78
Slide 84
Slide 84 text
79
Slide 85
Slide 85 text
80
Slide 86
Slide 86 text
Computations
Mergeability & Provenance
81
Slide 87
Slide 87 text
A
A
B
C
82
Slide 88
Slide 88 text
A
A
B
C
D’
D’’
F
F
83
Slide 89
Slide 89 text
A
A
B
C
D’
D’’
D’ D’’ D
F
F
84
Slide 90
Slide 90 text
D’’
A
A
B
C
D’
D’ D’’ D
D
D
Merge
F
F
85
Slide 91
Slide 91 text
Example Application
Preliminary Results
86
Slide 92
Slide 92 text
Preliminary Results
• Conflict-Free Replicated Data Types
Distributed data structures designed for convergence
[Shapiro et al., 2011]
87
Slide 93
Slide 93 text
Preliminary Results
• Conflict-Free Replicated Data Types
Distributed data structures designed for convergence
[Shapiro et al., 2011]
• Lattice Processing
Make decisions based on results of local computation
[Meiklejohn & Van Roy, 2015]
87
Slide 94
Slide 94 text
Preliminary Results
• Conflict-Free Replicated Data Types
Distributed data structures designed for convergence
[Shapiro et al., 2011]
• Lattice Processing
Make decisions based on results of local computation
[Meiklejohn & Van Roy, 2015]
• Selective Hearing
Scalable, epidemic broadcast based runtime system
[Meiklejohn & Van Roy, 2015/2016]
87
Slide 95
Slide 95 text
Conflict-Free
Replicated Data Types
• Collection of types
Sets, counters, registers, flags, maps
88
Slide 96
Slide 96 text
Conflict-Free
Replicated Data Types
• Collection of types
Sets, counters, registers, flags, maps
• Strong Eventual Consistency (SEC)
Objects that receive the same updates,
regardless of order, will reach equivalent
state
88
Lattice Processing
• Distributed dataflow
Declarative, functional programming
model
94
Slide 103
Slide 103 text
Lattice Processing
• Distributed dataflow
Declarative, functional programming
model
• Convergent data structures
Data abstraction is the CRDT
94
Slide 104
Slide 104 text
Lattice Processing
• Distributed dataflow
Declarative, functional programming
model
• Convergent data structures
Data abstraction is the CRDT
• Enables composition
Composition preserves SEC
94
Slide 105
Slide 105 text
95
%% Create initial set.
S1 = declare(set),
%% Add elements to initial set and update.
update(S1, {add, [1,2,3]}),
%% Create second set.
S2 = declare(set),
%% Apply map operation between S1 and S2.
map(S1, fun(X) -> X * 2 end, S2).
Slide 106
Slide 106 text
96
%% Create initial set.
S1 = declare(set),
%% Add elements to initial set and update.
update(S1, {add, [1,2,3]}),
%% Create second set.
S2 = declare(set),
%% Apply map operation between S1 and S2.
map(S1, fun(X) -> X * 2 end, S2).
Slide 107
Slide 107 text
97
%% Create initial set.
S1 = declare(set),
%% Add elements to initial set and update.
update(S1, {add, [1,2,3]}),
%% Create second set.
S2 = declare(set),
%% Apply map operation between S1 and S2.
map(S1, fun(X) -> X * 2 end, S2).
Slide 108
Slide 108 text
98
%% Create initial set.
S1 = declare(set),
%% Add elements to initial set and update.
update(S1, {add, [1,2,3]}),
%% Create second set.
S2 = declare(set),
%% Apply map operation between S1 and S2.
map(S1, fun(X) -> X * 2 end, S2).
Slide 109
Slide 109 text
99
%% Create initial set.
S1 = declare(set),
%% Add elements to initial set and update.
update(S1, {add, [1,2,3]}),
%% Create second set.
S2 = declare(set),
%% Apply map operation between S1 and S2.
map(S1, fun(X) -> X * 2 end, S2).
Slide 110
Slide 110 text
Delta-based Dissemination
• Delta-state based CRDTs
Reduces state transmission for clients
100
Slide 111
Slide 111 text
Delta-based Dissemination
• Delta-state based CRDTs
Reduces state transmission for clients
• Operate locally
Objects are mutated locally; deltas buffered
locally and periodically gossiped
100
Slide 112
Slide 112 text
Delta-based Dissemination
• Delta-state based CRDTs
Reduces state transmission for clients
• Operate locally
Objects are mutated locally; deltas buffered
locally and periodically gossiped
• Only fixed number of clients
Clients resort to full state synchronization
when they’ve been partitioned too long
100
Slide 113
Slide 113 text
No content
Slide 114
Slide 114 text
No content
Slide 115
Slide 115 text
No content
Slide 116
Slide 116 text
No content
Slide 117
Slide 117 text
No content
Slide 118
Slide 118 text
No content
Slide 119
Slide 119 text
No content
Slide 120
Slide 120 text
No content
Slide 121
Slide 121 text
Selective Hearing
• Epidemic broadcast protocol
Runtime system for application state & scope
109
Slide 122
Slide 122 text
Selective Hearing
• Epidemic broadcast protocol
Runtime system for application state & scope
• Peer-to-peer dissemination
Pairwise synchronization between peers
without a central coordinator
109
Slide 123
Slide 123 text
Selective Hearing
• Epidemic broadcast protocol
Runtime system for application state & scope
• Peer-to-peer dissemination
Pairwise synchronization between peers
without a central coordinator
• No ordering guarantees on messages
Programming model can tolerate message
reordering and duplication
109
Slide 124
Slide 124 text
Membership Overlay
Slide 125
Slide 125 text
Membership Overlay
Broadcast Overlay
Slide 126
Slide 126 text
Membership Overlay
Broadcast Overlay
Slide 127
Slide 127 text
Membership Overlay
Broadcast Overlay
Mobile Phone
Slide 128
Slide 128 text
Membership Overlay
Broadcast Overlay
Mobile Phone
Distributed Hash Table
Advertisement Counter
• Mobile game platform selling
advertisement space
Advertisements are paid according to a
minimum number of impressions
117
Slide 132
Slide 132 text
Advertisement Counter
• Mobile game platform selling
advertisement space
Advertisements are paid according to a
minimum number of impressions
• Clients will go offline
Clients have limited connectivity and the
system still needs to make progress
while clients are offline
117
Slide 133
Slide 133 text
Ads
Rovio Ad
Counter 1
Rovio Ad
Counter 2
Riot Ad
Counter 1
Riot Ad
Counter 2
Contracts
Ads
Contracts
Ads
With
Contracts
Riot Ads
Rovio
Ads
Filter
Product
Read
50,000
Remove
Increment
Read
Union
Lasp Operation
User-Maintained CRDT
Lasp-Maintained CRDT
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Client Side, Single Copy at Client
118
Slide 134
Slide 134 text
Ads
Rovio Ad
Counter 1
Rovio Ad
Counter 2
Riot Ad
Counter 1
Riot Ad
Counter 2
Contracts
Ads
Contracts
Riot Ads
Rovio
Ads
Product
Read
50,000
Remove
Increment
Union
119
Ads
Rovio Ad
Counter 1
Rovio Ad
Counter 2
Riot Ad
Counter 1
Riot Ad
Counter 2
Contracts
Ads
Contracts
Ads
With
Contracts
Riot Ads
Rovio
Ads
Filter
Product
Read
50,000
Remove
Increment
Read
Union
Lasp Operation
User-Maintained CRDT
Lasp-Maintained CRDT
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Client Side, Single Copy at Client
Slide 135
Slide 135 text
Ads
Rovio Ad
Counter 1
Rovio Ad
Counter 2
Riot Ad
Counter 1
Riot Ad
Counter 2
Contracts
Ads
Contracts
Ads
With
Contracts
Riot Ads
Rovio
Ads
Filter
Product
Read
50,000
Remove
Increment
Read
Union
Rovio Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
1
Client
120
Ads
Rovio Ad
Counter 1
Rovio Ad
Counter 2
Riot Ad
Counter 1
Riot Ad
Counter 2
Contracts
Ads
Contracts
Ads
With
Contracts
Riot Ads
Rovio
Ads
Filter
Product
Read
50,000
Remove
Increment
Read
Union
Lasp Operation
User-Maintained CRDT
Lasp-Maintained CRDT
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Client Side, Single Copy at Client
Slide 136
Slide 136 text
Ads
ovio Ad
ounter 1
ovio Ad
ounter 2
Riot Ad
ounter 1
Riot Ad
ounter 2
Contracts
Ads
Contracts
Ads
With
Contracts
Riot Ads
Rovio
Ads
Filter
Product
Read
50,000
Remove
Increment
Read
Union
Rovio Ad
Counter
1
Ro
C
Rovio Ad
Counter
1
Ro
C
Rovio Ad
Counter
1
Ro
C
Rovio Ad
Counter
1
Ro
C
Client Side, Sing
121
Ads
Rovio Ad
Counter 1
Rovio Ad
Counter 2
Riot Ad
Counter 1
Riot Ad
Counter 2
Contracts
Ads
Contracts
Ads
With
Contracts
Riot Ads
Rovio
Ads
Filter
Product
Read
50,000
Remove
Increment
Read
Union
Lasp Operation
User-Maintained CRDT
Lasp-Maintained CRDT
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Client Side, Single Copy at Client
Slide 137
Slide 137 text
Ads
Contracts
Ads
Contracts
Ads
With
Contracts
Riot Ads
Rovio
Ads
Filter
Product
move Read
Union
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Client Side, Single Copy at Client
122
Ads
Rovio Ad
Counter 1
Rovio Ad
Counter 2
Riot Ad
Counter 1
Riot Ad
Counter 2
Contracts
Ads
Contracts
Ads
With
Contracts
Riot Ads
Rovio
Ads
Filter
Product
Read
50,000
Remove
Increment
Read
Union
Lasp Operation
User-Maintained CRDT
Lasp-Maintained CRDT
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Client Side, Single Copy at Client
Slide 138
Slide 138 text
Ads
Contracts
Ads
Contracts
Ads
With
Contracts
Filter
Product
Read
Union
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Client Side, Single Copy at Client
123
Ads
Rovio Ad
Counter 1
Rovio Ad
Counter 2
Riot Ad
Counter 1
Riot Ad
Counter 2
Contracts
Ads
Contracts
Ads
With
Contracts
Riot Ads
Rovio
Ads
Filter
Product
Read
50,000
Remove
Increment
Read
Union
Lasp Operation
User-Maintained CRDT
Lasp-Maintained CRDT
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Client Side, Single Copy at Client
Slide 139
Slide 139 text
Ads
Rovio Ad
Counter 1
Rovio Ad
Counter 2
Riot Ad
Counter 1
Riot Ad
Counter 2
Contracts
Ads
Contracts
Ads
With
Contracts
Riot Ads
Rovio
Ads
Filter
Product
Read
50,000
Remove
Increment
Read
Union
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Client Side, Single Copy at Client
124
Ads
Rovio Ad
Counter 1
Rovio Ad
Counter 2
Riot Ad
Counter 1
Riot Ad
Counter 2
Contracts
Ads
Contracts
Ads
With
Contracts
Riot Ads
Rovio
Ads
Filter
Product
Read
50,000
Remove
Increment
Read
Union
Lasp Operation
User-Maintained CRDT
Lasp-Maintained CRDT
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Client Side, Single Copy at Client
Slide 140
Slide 140 text
Ads
Rovio Ad
Counter 1
Rovio Ad
Counter 2
Riot Ad
Counter 1
Riot Ad
Counter 2
Contracts
Ads
Contracts
Riot Ads
Rovio
Ads
Fil
Product
Read
50,000
Remove
Increment
Union
125
Ads
Rovio Ad
Counter 1
Rovio Ad
Counter 2
Riot Ad
Counter 1
Riot Ad
Counter 2
Contracts
Ads
Contracts
Ads
With
Contracts
Riot Ads
Rovio
Ads
Filter
Product
Read
50,000
Remove
Increment
Read
Union
Lasp Operation
User-Maintained CRDT
Lasp-Maintained CRDT
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Client Side, Single Copy at Client
Slide 141
Slide 141 text
Ads
Rovio Ad
Counter 1
Rovio Ad
Counter 2
Riot Ad
Counter 1
Riot Ad
Counter 2
Contracts
Ads
Contracts
Ads
With
Contracts
Riot Ads
Rovio
Ads
Filter
Product
Read
50,000
Remove
Increment
Read
Union
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Client Side, Single Copy at Client
126
Ads
Rovio Ad
Counter 1
Rovio Ad
Counter 2
Riot Ad
Counter 1
Riot Ad
Counter 2
Contracts
Ads
Contracts
Ads
With
Contracts
Riot Ads
Rovio
Ads
Filter
Product
Read
50,000
Remove
Increment
Read
Union
Lasp Operation
User-Maintained CRDT
Lasp-Maintained CRDT
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Riot Ad
Counter
1
Client Side, Single Copy at Client
Slide 142
Slide 142 text
Advertisement Counter
• Completely monotonic
Disabling advertisements and contracts are all
modeled through monotonic state growth
127
Slide 143
Slide 143 text
Advertisement Counter
• Completely monotonic
Disabling advertisements and contracts are all
modeled through monotonic state growth
• Arbitrary distribution
Use of convergent data structures allows
computational graph to be arbitrarily distributed
127
Slide 144
Slide 144 text
Advertisement Counter
• Completely monotonic
Disabling advertisements and contracts are all
modeled through monotonic state growth
• Arbitrary distribution
Use of convergent data structures allows
computational graph to be arbitrarily distributed
• Divergence
Divergence is a factor of synchronization period
127
Slide 145
Slide 145 text
Client3
Lasp Operation
User-Maintained CRDT
Lasp-Maintained CRDT
Riot Ad
Counter
1
Client1
Client2
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Rovio Ad
Counter
1
Riot Ad
Counter
2
Riot Ad
Counter
1
Riot Ad
Counter
1
Ads
With
Contracts
Ads
With
Contracts
Ads
With
Contracts
Server
Ads
With
Contracts
Server
Computation!
128
Slide 146
Slide 146 text
Client3
Lasp Operation
User-Maintained CRDT
Lasp-Maintained CRDT
Riot Ad
Counter
1
Client1
Client2
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Rovio Ad
Counter
1
Riot Ad
Counter
2
Riot Ad
Counter
1
Riot Ad
Counter
1
Ads
With
Contracts
Ads
With
Contracts
Ads
With
Contracts
Server
Ads
With
Contracts
Server
Computation!
129
Slide 147
Slide 147 text
Client3
Lasp Operation
User-Maintained CRDT
Lasp-Maintained CRDT
Riot Ad
Counter
1
Client1
Client2
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Rovio Ad
Counter
1
Rovio Ad
Counter
2
Rovio Ad
Counter
1
Riot Ad
Counter
2
Riot Ad
Counter
1
Riot Ad
Counter
1
Ads
With
Contracts
Ads
With
Contracts
Ads
With
Contracts
Server
Ads
With
Contracts
Server
Computation!
130
Slide 148
Slide 148 text
Advertisement Counter
• “Servers” as peers to “clients”
Servers are peers to clients that perform additional
computation
131
Slide 149
Slide 149 text
Advertisement Counter
• “Servers” as peers to “clients”
Servers are peers to clients that perform additional
computation
• Any node can disable an advertisement under this
model given enough information
131
Slide 150
Slide 150 text
Advertisement Counter
• “Servers” as peers to “clients”
Servers are peers to clients that perform additional
computation
• Any node can disable an advertisement under this
model given enough information
• “Servers” as trusted nodes
Serve as a location for performing “exactly once” side-
effects
131
Slide 151
Slide 151 text
Advertisement Counter
• “Servers” as peers to “clients”
Servers are peers to clients that perform additional
computation
• Any node can disable an advertisement under this
model given enough information
• “Servers” as trusted nodes
Serve as a location for performing “exactly once” side-
effects
• Billing customers must be done at a central point by a
trusted node in the system
131
Slide 152
Slide 152 text
We’ve built up from zero
synchronization
132
Slide 153
Slide 153 text
We’ve built up from zero
synchronization
132
Instead of working to
remove synchronization
How restrictive is a programming
model where operations must be
associative, commutative, and
idempotent?
142
Slide 164
Slide 164 text
How do I learn
more?
143
Slide 165
Slide 165 text
Publications
• “Lasp: A Language for Distributed, Coordination-Free Programming”
ACM SIGPLAN PPDP 2015
• “Selective Hearing: An Approach to Distributed, Eventually Consistent Edge
Computation”
IEEE W-PSDS 2015
• “The Implementation and Use of a Generic Dataflow Behaviour in Erlang”
ACM SIGPLAN Erlang Workshop ’15
• “Lasp: A Language for Distributed, Eventually Consistent Computations with CRDTs"
PaPoC 2015
• “Declarative, Sliding Window Aggregations for Computations at the Edge"
IEEE EdgeCom 2016
144
Slide 166
Slide 166 text
Three independently
successful techniques.
145
Slide 167
Slide 167 text
Can we combine them into a
cohesive programming
environment for distributed
programming?
146
Slide 168
Slide 168 text
147
Christopher Meiklejohn
@cmeik
http://www.lasp-lang.org
Thanks!