Share
The Road to Akka Cluster, and Beyond…
Today, the skills of writing distributed applications is both more important and at the same time more challenging than ever. With the advent of mobile devices, NoSQL databases, cloud services etc. you most likely already have a distributed system at your hands—whether you like it or not. Distributed computing is the new norm.
In this talk we will take you on a journey across the distributed computing landscape. We will start with walking through some of the early work in computer architecture—setting the stage for what we are doing today. Then continue through distributed computing—discussing things like important Impossibility Theorems (FLP, CAP), Consensus Protocols (Raft, HAT, Epidemic Gossip etc.), Failure Detection (Accrual, Byzantine etc.), up to today’s very exciting research in the field, like ACID 2.0, Disorderly Programming (CRDTs, CALM etc).
Along the way we will discuss the decisions and trade-offs that were made when creating Akka Cluster, its theoretical foundation, why it is designed the way it is and what the future holds.
Jonas Bonér
Transcript
299 slides
-
Distributed Computing is the New normal you already have a
distributed system, WHETHER you want it or not -
Distributed Computing is the New normal you already have a
distributed system, WHETHER you want it or not Mobile NOSQL Databases Cloud & REST Services SQL Replication -
essence of distributed computing? overcome 1. Information travels at the
speed of light 2. Independent things fail independently What is the It’s to try to -
Why do we need it? Elasticity When you outgrow the
resources of a single node -
Why do we need it? Elasticity When you outgrow the
resources of a single node Availability Providing resilience if one node fails -
Why do we need it? Elasticity When you outgrow the
resources of a single node Availability Providing resilience if one node fails Rich stateful clients -
Fallacies 1. The network is reliable 2. Latency is zero
3. Bandwidth is infinite 4. The network is secure 5. Topology doesn't change 6. There is one administrator 7. Transport cost is zero 8. The network is homogeneous Peter Deutsch’s 8 Fallacies of Distributed Computing -
1. Guaranteed Delivery 2. Synchronous RPC 3. Distributed Objects 4.
Distributed Shared Mutable State 5. Serializable Distributed Transactions Graveyard of distributed systems -
WHICH Requires SHARE NOTHING Designs General strategies Location Transparency Asynchronous
Message-Passing ISolation & Containment -
A model for distributed Computation Should Allow explicit reasoning abouT
1. Concurrency 2. Distribution 3. Mobility Carlos Varela 2013 -
Lambda Calculus state Immutable state Managed through functional application Referential
transparent Alonzo Church 1930 -
order β-reduction—can be performed in any order Normal order Applicative
order Call-by-name order Call-by-value order Call-by-need order Lambda Calculus state Immutable state Managed through functional application Referential transparent Alonzo Church 1930 -
Even in parallel order β-reduction—can be performed in any order
Normal order Applicative order Call-by-name order Call-by-value order Call-by-need order Lambda Calculus state Immutable state Managed through functional application Referential transparent Alonzo Church 1930 -
Even in parallel order β-reduction—can be performed in any order
Normal order Applicative order Call-by-name order Call-by-value order Call-by-need order Lambda Calculus state Immutable state Managed through functional application Referential transparent Alonzo Church 1930 Supports Concurrency -
Even in parallel order β-reduction—can be performed in any order
Normal order Applicative order Call-by-name order Call-by-value order Call-by-need order Lambda Calculus state Immutable state Managed through functional application Referential transparent Alonzo Church 1930 Supports Concurrency No model for Distribution -
Even in parallel order β-reduction—can be performed in any order
Normal order Applicative order Call-by-name order Call-by-value order Call-by-need order Lambda Calculus state Immutable state Managed through functional application Referential transparent Alonzo Church 1930 Supports Concurrency No model for Distribution No model for Mobility -
Memory Control Unit Arithmetic Logic Unit Input Output Accumulator Von
neumann machine John von Neumann 1945 -
order Total order List of instructions Array of memory Von
neumann machine state Mutable state In-place updates John von Neumann 1945 -
order Total order List of instructions Array of memory Von
neumann machine state Mutable state In-place updates John von Neumann 1945 No model for Concurrency -
order Total order List of instructions Array of memory Von
neumann machine state Mutable state In-place updates John von Neumann 1945 No model for Concurrency No model for Distribution -
order Total order List of instructions Array of memory Von
neumann machine state Mutable state In-place updates John von Neumann 1945 No model for Concurrency No model for Distribution No model for Mobility -
order Serializability Disorder across transactions Illusion of order within transactions
transactions state Isolation of updates Atomicity Jim Gray 1981 -
order Serializability Disorder across transactions Illusion of order within transactions
transactions state Isolation of updates Atomicity Jim Gray 1981 Concurrency Works Work Well -
order Serializability Disorder across transactions Illusion of order within transactions
transactions state Isolation of updates Atomicity Jim Gray 1981 Concurrency Works Work Well Distribution Does Not Work Well -
order Async message passing Non-determinism in message delivery actors state
Share nothing Atomicity within the actor Carl HEWITT 1973 -
order Async message passing Non-determinism in message delivery actors state
Share nothing Atomicity within the actor Carl HEWITT 1973 Great model for Concurrency -
order Async message passing Non-determinism in message delivery actors state
Share nothing Atomicity within the actor Carl HEWITT 1973 Great model for Concurrency Great model for Distribution -
order Async message passing Non-determinism in message delivery actors state
Share nothing Atomicity within the actor Carl HEWITT 1973 Great model for Concurrency Great model for Distribution Great model for Mobility -
other interesting models That are suitable for distributed systems 1.
Pi Calculus 2. Ambient Calculus 3. Join Calculus -
Impossibility of Distributed Consensus with One Faulty Process FLP Fischer
Lynch Paterson 1985 -
Impossibility of Distributed Consensus with One Faulty Process FLP Fischer
Lynch Paterson 1985 Consensus is impossible -
Impossibility of Distributed Consensus with One Faulty Process FLP “The
FLP result shows that in an asynchronous setting, where only one processor might crash, there is no distributed algorithm that solves the consensus problem” - The Paper Trail Fischer Lynch Paterson 1985 Consensus is impossible -
Impossibility of Distributed Consensus with One Faulty Process FLP Fischer
Lynch Paterson 1985 -
Impossibility of Distributed Consensus with One Faulty Process FLP “These
results do not show that such problems cannot be “solved” in practice; rather, they point up the need for more refined models of distributed computing” - FLP paper Fischer Lynch Paterson 1985 -
Conjecture by Eric Brewer 2000 Proof by Lynch & Gilbert
2002 Linearizability is impossible CAP Theorem -
Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web
Services Conjecture by Eric Brewer 2000 Proof by Lynch & Gilbert 2002 Linearizability is impossible CAP Theorem -
linearizability “Under linearizable consistency, all operations appear to have executed
atomically in an order that is consistent with the global real-time ordering of operations.” Herlihy & Wing 1991 -
linearizability “Under linearizable consistency, all operations appear to have executed
atomically in an order that is consistent with the global real-time ordering of operations.” Herlihy & Wing 1991 Less formally: A read will return the last completed write (made on any replica) -
dissecting CAP 1. Very influential—but very NARROW scope 2. “[CAP]
has lead to confusion and misunderstandings regarding replica consistency, transactional isolation and high availability” - Bailis et.al in HAT paper -
dissecting CAP 1. Very influential—but very NARROW scope 2. “[CAP]
has lead to confusion and misunderstandings regarding replica consistency, transactional isolation and high availability” - Bailis et.al in HAT paper 3. Linearizability is very often NOT required -
dissecting CAP 1. Very influential—but very NARROW scope 2. “[CAP]
has lead to confusion and misunderstandings regarding replica consistency, transactional isolation and high availability” - Bailis et.al in HAT paper 3. Linearizability is very often NOT required 4. Ignores LATENCY—but in practice latency & partitions are deeply related -
dissecting CAP 1. Very influential—but very NARROW scope 2. “[CAP]
has lead to confusion and misunderstandings regarding replica consistency, transactional isolation and high availability” - Bailis et.al in HAT paper 3. Linearizability is very often NOT required 4. Ignores LATENCY—but in practice latency & partitions are deeply related 5. Partitions are RARE—so why sacrifice C or A ALL the time? -
dissecting CAP 1. Very influential—but very NARROW scope 2. “[CAP]
has lead to confusion and misunderstandings regarding replica consistency, transactional isolation and high availability” - Bailis et.al in HAT paper 3. Linearizability is very often NOT required 4. Ignores LATENCY—but in practice latency & partitions are deeply related 5. Partitions are RARE—so why sacrifice C or A ALL the time? 6. NOT black and white—can be fine-grained and dynamic -
dissecting CAP 1. Very influential—but very NARROW scope 2. “[CAP]
has lead to confusion and misunderstandings regarding replica consistency, transactional isolation and high availability” - Bailis et.al in HAT paper 3. Linearizability is very often NOT required 4. Ignores LATENCY—but in practice latency & partitions are deeply related 5. Partitions are RARE—so why sacrifice C or A ALL the time? 6. NOT black and white—can be fine-grained and dynamic 7. Read ‘CAP Twelve Years Later’ - Eric Brewer -
consensus “The problem of reaching agreement among remote processes is
one of the most fundamental problems in distributed computing and is at the core of many algorithms for distributed data processing, distributed file management, and fault- tolerant distributed applications.” Fischer, Lynch & Paterson 1985 -
lamport clocks logical clock causal consistency Leslie lamport 1978 1.
When a process does work, increment the counter -
lamport clocks logical clock causal consistency Leslie lamport 1978 1.
When a process does work, increment the counter 2. When a process sends a message, include the counter -
lamport clocks logical clock causal consistency Leslie lamport 1978 1.
When a process does work, increment the counter 2. When a process sends a message, include the counter 3. When a message is received, merge the counter (set the counter to max(local, received) + 1) -
vector clocks Extends lamport clocks colin fidge 1988 1. Each
node owns and increments its own Lamport Clock -
vector clocks Extends lamport clocks colin fidge 1988 1. Each
node owns and increments its own Lamport Clock [node -> lamport clock] -
vector clocks Extends lamport clocks colin fidge 1988 1. Each
node owns and increments its own Lamport Clock [node -> lamport clock] -
vector clocks Extends lamport clocks colin fidge 1988 1. Each
node owns and increments its own Lamport Clock [node -> lamport clock] 2. Alway keep the full history of all increments -
vector clocks Extends lamport clocks colin fidge 1988 1. Each
node owns and increments its own Lamport Clock [node -> lamport clock] 2. Alway keep the full history of all increments 3. Merges by calculating the max—monotonic merge -
Quorum Strict majority vote Sloppy partial vote • Most use
R + W > N 㱺 R & W overlap -
Quorum Strict majority vote Sloppy partial vote • Most use
R + W > N 㱺 R & W overlap • If N / 2 + 1 is still alive 㱺 all good -
Quorum Strict majority vote Sloppy partial vote • Most use
R + W > N 㱺 R & W overlap • If N / 2 + 1 is still alive 㱺 all good • Most use N ⩵ 3 -
Strong completeness Every crashed process is eventually suspected by every
correct process Failure detection Formal model -
Strong completeness Every crashed process is eventually suspected by every
correct process Failure detection Formal model Everyone knows -
Strong completeness Every crashed process is eventually suspected by every
correct process Weak completeness Failure detection Formal model Everyone knows -
Strong completeness Every crashed process is eventually suspected by every
correct process Weak completeness Every crashed process is eventually suspected by some correct process Failure detection Formal model Everyone knows -
Strong completeness Every crashed process is eventually suspected by every
correct process Weak completeness Every crashed process is eventually suspected by some correct process Failure detection Formal model Everyone knows Someone knows -
Strong completeness Every crashed process is eventually suspected by every
correct process Weak completeness Every crashed process is eventually suspected by some correct process Strong accuracy Failure detection Formal model Everyone knows Someone knows -
Strong completeness Every crashed process is eventually suspected by every
correct process Weak completeness Every crashed process is eventually suspected by some correct process Strong accuracy No correct process is suspected ever Failure detection Formal model Everyone knows Someone knows -
Strong completeness Every crashed process is eventually suspected by every
correct process Weak completeness Every crashed process is eventually suspected by some correct process Strong accuracy No correct process is suspected ever Failure detection No false positives Formal model Everyone knows Someone knows -
Strong completeness Every crashed process is eventually suspected by every
correct process Weak completeness Every crashed process is eventually suspected by some correct process Strong accuracy No correct process is suspected ever Weak accuracy Failure detection No false positives Formal model Everyone knows Someone knows -
Strong completeness Every crashed process is eventually suspected by every
correct process Weak completeness Every crashed process is eventually suspected by some correct process Strong accuracy No correct process is suspected ever Weak accuracy Some correct process is never suspected Failure detection No false positives Formal model Everyone knows Someone knows -
Strong completeness Every crashed process is eventually suspected by every
correct process Weak completeness Every crashed process is eventually suspected by some correct process Strong accuracy No correct process is suspected ever Weak accuracy Some correct process is never suspected Failure detection No false positives Some false positives Formal model Everyone knows Someone knows -
Keeps history of heartbeat statistics Decouples monitoring from interpretation Accrual
Failure detector Hayashibara et. al. 2004 -
Keeps history of heartbeat statistics Decouples monitoring from interpretation Calculates
a likelihood (phi value) that the process is down Accrual Failure detector Hayashibara et. al. 2004 -
Not YES or NO Keeps history of heartbeat statistics Decouples
monitoring from interpretation Calculates a likelihood (phi value) that the process is down Accrual Failure detector Hayashibara et. al. 2004 -
Not YES or NO Keeps history of heartbeat statistics Decouples
monitoring from interpretation Calculates a likelihood (phi value) that the process is down Accrual Failure detector Hayashibara et. al. 2004 Takes network hiccups into account -
Not YES or NO Keeps history of heartbeat statistics Decouples
monitoring from interpretation Calculates a likelihood (phi value) that the process is down Accrual Failure detector Hayashibara et. al. 2004 Takes network hiccups into account phi = -log10(1 - F(timeSinceLastHeartbeat)) F is the cumulative distribution function of a normal distribution with mean and standard deviation estimated from historical heartbeat inter-arrival times -
SWIM Failure detector das et. al. 2002 Separates heartbeats from
cluster dissemination -
SWIM Failure detector das et. al. 2002 Separates heartbeats from
cluster dissemination Quarantine: suspected 㱺 time window 㱺 faulty -
SWIM Failure detector das et. al. 2002 Separates heartbeats from
cluster dissemination Quarantine: suspected 㱺 time window 㱺 faulty Delegated heartbeat to bridge network splits -
Supports misbehaving processes byzantine Failure detector liskov et. al. 1999
Omission failures Crash failures, failing to receive a request, or failing to send a response -
Supports misbehaving processes byzantine Failure detector liskov et. al. 1999
Omission failures Crash failures, failing to receive a request, or failing to send a response Commission failures -
Supports misbehaving processes byzantine Failure detector liskov et. al. 1999
Omission failures Crash failures, failing to receive a request, or failing to send a response Commission failures Processing a request incorrectly, corrupting local state, and/or sending an incorrect or inconsistent response to a request -
Supports misbehaving processes byzantine Failure detector liskov et. al. 1999
Omission failures Crash failures, failing to receive a request, or failing to send a response Commission failures Processing a request incorrectly, corrupting local state, and/or sending an incorrect or inconsistent response to a request Very expensive, not practical -
Active (Push) ! Asynchronous Types of replication Passive (Pull) !
Synchronous VS VS -
Executive Summary • Most SQL DBs do not provide Serializability,
but weaker guarantees— for performance reasons Highly Available Transactions Peter Bailis et. al. 2013 CAP HAT NOT -
Executive Summary • Most SQL DBs do not provide Serializability,
but weaker guarantees— for performance reasons • Some weaker transaction guarantees are possible to implement in a HA manner Highly Available Transactions Peter Bailis et. al. 2013 CAP HAT NOT -
Executive Summary • Most SQL DBs do not provide Serializability,
but weaker guarantees— for performance reasons • Some weaker transaction guarantees are possible to implement in a HA manner • What transaction semantics can be provided with HA? Highly Available Transactions Peter Bailis et. al. 2013 CAP HAT NOT -
UnAvailable • Serializable • Snapshot Isolation • Repeatable Read •
Cursor Stability • etc. Highly Available • Read Committed • Read Uncommited • Read Your Writes • Monotonic Atomic View • Monotonic Read/Write • etc. HAT -
Other scalable or Highly Available Transactional Research Bolt-On Consistency Bailis
et. al. 2013 Calvin Thompson et. al. 2012 -
Other scalable or Highly Available Transactional Research Bolt-On Consistency Bailis
et. al. 2013 Calvin Thompson et. al. 2012 Spanner (Google) Corbett et. al. 2012 -
Events 1. Request(v) 2. Decide(v) Specification Properties 1. Termination: every
process eventually decides on a value v -
Events 1. Request(v) 2. Decide(v) Specification Properties 1. Termination: every
process eventually decides on a value v 2. Validity: if a process decides v, then v was proposed by some process -
Events 1. Request(v) 2. Decide(v) Specification Properties 1. Termination: every
process eventually decides on a value v 2. Validity: if a process decides v, then v was proposed by some process 3. Integrity: no process decides twice -
Events 1. Request(v) 2. Decide(v) Specification Properties 1. Termination: every
process eventually decides on a value v 2. Validity: if a process decides v, then v was proposed by some process 3. Integrity: no process decides twice 4. Agreement: no two correct processes decide differently -
Consensus Algorithms VR Oki & liskov 1988 Paxos Lamport 1989
ZAB reed & junquiera 2008 CAP -
Consensus Algorithms VR Oki & liskov 1988 Paxos Lamport 1989
ZAB reed & junquiera 2008 Raft ongaro & ousterhout 2013 CAP -
“Immutability Changes Everything” - Pat Helland Immutable Data Immutability Share
Nothing Architecture -
“Immutability Changes Everything” - Pat Helland Immutable Data Immutability Share
Nothing Architecture TRUE Scalability Is the path towards -
"The database is a cache of a subset of the
log” - Pat Helland Think In Facts -
"The database is a cache of a subset of the
log” - Pat Helland Think In Facts Never delete data Knowledge only grows Append-Only Event Log Use Event Sourcing and/or CQRS -
Aggregate Roots Can wrap multiple Entities Aggregate Root is the
Transactional Boundary -
Aggregate Roots Can wrap multiple Entities Strong Consistency Within Aggregate
Eventual Consistency Between Aggregates Aggregate Root is the Transactional Boundary -
Aggregate Roots Can wrap multiple Entities Strong Consistency Within Aggregate
Eventual Consistency Between Aggregates Aggregate Root is the Transactional Boundary No limit to scalability -
Dynamo Popularized • Eventual consistency • Epidemic gossip • Consistent
hashing ! • Hinted handoff • Read repair • Anti-Entropy W/ Merkle trees VerY influential CAP Vogels et. al. 2007 -
Consistent Hashing Support elasticity— easier to scale up and down
Avoids hotspots Enables partitioning and replication Karger et. al. 1997 -
Consistent Hashing Support elasticity— easier to scale up and down
Avoids hotspots Enables partitioning and replication Karger et. al. 1997 Only K/N nodes needs to be remapped when adding or removing a node (K=#keys, N=#nodes) -
How eventual is How consistent is Eventual consistency? Probabilistically Bounded
Staleness Peter Bailis et. al 2012 PBS -
How eventual is How consistent is Eventual consistency? Probabilistically Bounded
Staleness Peter Bailis et. al 2012 PBS -
Node ring & Epidemic Gossip Member Node Member Node Member
Node Member Node Member Node Member Node Member Node Member Node Member Node Member Node CHORD Stoica et al 2001 -
Node ring & Epidemic Gossip Member Node Member Node Member
Node Member Node Member Node Member Node Member Node Member Node Member Node Member Node CHORD Stoica et al 2001 -
Node ring & Epidemic Gossip Member Node Member Node Member
Node Member Node Member Node Member Node Member Node Member Node Member Node Member Node CHORD Stoica et al 2001 -
Node ring & Epidemic Gossip Member Node Member Node Member
Node Member Node Member Node Member Node Member Node Member Node Member Node Member Node CHORD Stoica et al 2001 CAP -
Decentralized P2P No SPOF or SPOB Very Scalable Fully Elastic
Benefits of Epidemic Gossip ! Requires minimal administration Often used with VECTOR CLOCKS -
1. Separation of failure detection heartbeat and dissemination of data
- DAS et. al. 2002 (SWIM) 2. Push/Pull gossip - Khambatti et. al 2003 1. Hash and compare data 2. Use single hash or Merkle Trees Some Standard Optimizations to Epidemic Gossip -
ACID 2.0 Associative Batch-insensitive (grouping doesn't matter) a+(b+c)=(a+b)+c Commutative Order-insensitive
(order doesn't matter) a+b=b+a -
ACID 2.0 Associative Batch-insensitive (grouping doesn't matter) a+(b+c)=(a+b)+c Commutative Order-insensitive
(order doesn't matter) a+b=b+a Idempotent Retransmission-insensitive (duplication does not matter) a+a=a -
ACID 2.0 Associative Batch-insensitive (grouping doesn't matter) a+(b+c)=(a+b)+c Commutative Order-insensitive
(order doesn't matter) a+b=b+a Idempotent Retransmission-insensitive (duplication does not matter) a+a=a Eventually Consistent -
Convergent & Commutative Replicated Data Types CRDTShapiro et. al. 2011
Join Semilattice Monotonic merge function -
Convergent & Commutative Replicated Data Types Data types Counters Registers
Sets Maps Graphs CRDTShapiro et. al. 2011 Join Semilattice Monotonic merge function -
Convergent & Commutative Replicated Data Types Data types Counters Registers
Sets Maps Graphs CRDT CAP Shapiro et. al. 2011 Join Semilattice Monotonic merge function -
2 TYPES of CRDTs CvRDT Convergent State-based CmRDT Commutative Ops-based
Self contained, holds all history -
2 TYPES of CRDTs CvRDT Convergent State-based CmRDT Commutative Ops-based
Self contained, holds all history Needs a reliable broadcast channel -
CALM theorem Consistency As Logical Monotonicity Hellerstein et. al. 2011
Bloom Language Compiler help to detect & encapsulate non- monotonicity -
CALM theorem Consistency As Logical Monotonicity Distributed Logic Datalog/Dedalus Monotonic
functions Just add facts to the system Model state as Lattices Similar to CRDTs (without the scope problem) Hellerstein et. al. 2011 Bloom Language Compiler help to detect & encapsulate non- monotonicity -
What is Akka CLUSTER all about? • Cluster Membership •
Leader & Singleton • Cluster Sharding • Clustered Routers (adaptive, consistent hashing, …) • Clustered Supervision and Deathwatch • Clustered Pub/Sub • and more -
cluster membership in Akka • Dynamo-style master-less decentralized P2P •
Epidemic Gossip—Node Ring -
cluster membership in Akka • Dynamo-style master-less decentralized P2P •
Epidemic Gossip—Node Ring • Vector Clocks for causal consistency -
cluster membership in Akka • Dynamo-style master-less decentralized P2P •
Epidemic Gossip—Node Ring • Vector Clocks for causal consistency • Fully elastic with no SPOF or SPOB -
cluster membership in Akka • Dynamo-style master-less decentralized P2P •
Epidemic Gossip—Node Ring • Vector Clocks for causal consistency • Fully elastic with no SPOF or SPOB • Very scalable—2400 nodes (on GCE) -
cluster membership in Akka • Dynamo-style master-less decentralized P2P •
Epidemic Gossip—Node Ring • Vector Clocks for causal consistency • Fully elastic with no SPOF or SPOB • Very scalable—2400 nodes (on GCE) • High throughput—1000 nodes in 4 min (on GCE) -
State Gossip GOSSIPING case class Gossip( members: SortedSet[Member], seen: Set[Member],
unreachable: Set[Member], version: VectorClock) -
State Gossip GOSSIPING case class Gossip( members: SortedSet[Member], seen: Set[Member],
unreachable: Set[Member], version: VectorClock) Is a CRDT -
State Gossip GOSSIPING case class Gossip( members: SortedSet[Member], seen: Set[Member],
unreachable: Set[Member], version: VectorClock) Is a CRDT Ordered node ring -
State Gossip GOSSIPING case class Gossip( members: SortedSet[Member], seen: Set[Member],
unreachable: Set[Member], version: VectorClock) Is a CRDT Ordered node ring Seen set for convergence -
State Gossip GOSSIPING case class Gossip( members: SortedSet[Member], seen: Set[Member],
unreachable: Set[Member], version: VectorClock) Is a CRDT Ordered node ring Seen set for convergence Unreachable set -
State Gossip GOSSIPING case class Gossip( members: SortedSet[Member], seen: Set[Member],
unreachable: Set[Member], version: VectorClock) Is a CRDT Ordered node ring Seen set for convergence Unreachable set Version -
State Gossip GOSSIPING case class Gossip( members: SortedSet[Member], seen: Set[Member],
unreachable: Set[Member], version: VectorClock) 1. Picks random node with older/newer version Is a CRDT Ordered node ring Seen set for convergence Unreachable set Version -
State Gossip GOSSIPING case class Gossip( members: SortedSet[Member], seen: Set[Member],
unreachable: Set[Member], version: VectorClock) 1. Picks random node with older/newer version 2. Gossips in a request/reply fashion Is a CRDT Ordered node ring Seen set for convergence Unreachable set Version -
State Gossip GOSSIPING case class Gossip( members: SortedSet[Member], seen: Set[Member],
unreachable: Set[Member], version: VectorClock) 1. Picks random node with older/newer version 2. Gossips in a request/reply fashion 3. Updates internal state and adds himself to ‘seen’ set Is a CRDT Ordered node ring Seen set for convergence Unreachable set Version -
Cluster Convergence Reached when: 1. All nodes are represented in
the seen set 2. No members are unreachable, or 3. All unreachable members have status down or exiting -
GOSSIP BIASED 80% bias to nodes not in seen table
Up to 400 nodes, then reduced -
ROLE 1. No election, but deterministic 2. Can change after
cluster convergence LEADER Any node can be the leader -
ROLE 1. No election, but deterministic 2. Can change after
cluster convergence 3. Leader has special duties LEADER Any node can be the leader -
Failure Detection Hashes the node ring Picks 5 nodes Request/Reply
heartbeat To increase likelihood of bridging racks and data centers -
Failure Detection Cluster Membership Remote Death Watch Remote Supervision Hashes
the node ring Picks 5 nodes Request/Reply heartbeat To increase likelihood of bridging racks and data centers Used by -
Failure Detection Is an Accrual Failure Detector Does not help
much in practice -
Failure Detection Is an Accrual Failure Detector Does not help
much in practice Need to add delay to deal with Garbage Collection -
Failure Detection Is an Accrual Failure Detector Does not help
much in practice Instead of this Need to add delay to deal with Garbage Collection -
Failure Detection Is an Accrual Failure Detector Does not help
much in practice Instead of this It often looks like this Need to add delay to deal with Garbage Collection -
Network Partitions • Failure Detector can mark an unavailable member
Unreachable • If one node is Unreachable then no cluster Convergence -
Network Partitions • Failure Detector can mark an unavailable member
Unreachable • If one node is Unreachable then no cluster Convergence • This means that the Leader can no longer perform it’s duties -
Network Partitions • Failure Detector can mark an unavailable member
Unreachable • If one node is Unreachable then no cluster Convergence • This means that the Leader can no longer perform it’s duties Split Brain -
Network Partitions • Failure Detector can mark an unavailable member
Unreachable • If one node is Unreachable then no cluster Convergence • This means that the Leader can no longer perform it’s duties • Member can come back from Unreachable—Else: Split Brain -
Network Partitions • Failure Detector can mark an unavailable member
Unreachable • If one node is Unreachable then no cluster Convergence • This means that the Leader can no longer perform it’s duties • Member can come back from Unreachable—Else: • The node needs to be marked as Down—either through: Split Brain -
Network Partitions • Failure Detector can mark an unavailable member
Unreachable • If one node is Unreachable then no cluster Convergence • This means that the Leader can no longer perform it’s duties • Member can come back from Unreachable—Else: • The node needs to be marked as Down—either through: 1. auto-down 2. Manual down Split Brain -
Potential FUTURE Optimizations • Vector Clock HISTORY pruning • Delegated
heartbeat • “Real” push/pull gossip -
Potential FUTURE Optimizations • Vector Clock HISTORY pruning • Delegated
heartbeat • “Real” push/pull gossip • More out-of-the-box auto-down patterns -
Akka Modules For Distribution Akka Cluster Akka Remote Akka HTTP
Akka IO Clustered Singleton Clustered Routers Clustered Pub/Sub Cluster Client Consistent Hashing -
Akka & The Road Ahead Akka HTTP Akka Streams Akka
CRDT Akka Raft -
Akka & The Road Ahead Akka HTTP Akka Streams Akka
CRDT Akka Raft Akka 2.4 -
Akka & The Road Ahead Akka HTTP Akka Streams Akka
CRDT Akka Raft Akka 2.4 Akka 2.4 -
Akka & The Road Ahead Akka HTTP Akka Streams Akka
CRDT Akka Raft Akka 2.4 Akka 2.4 ? -
Akka & The Road Ahead Akka HTTP Akka Streams Akka
CRDT Akka Raft Akka 2.4 Akka 2.4 ? ? -
Join us at React Conf San Francisco Nov 18-21 reactconf.com
Early Registration ends tomorrow -
References • General Distributed Systems • Summary of network reliability
post-mortems—more terrifying than the most horrifying Stephen King novel: http://aphyr.com/posts/288-the-network-is- reliable • A Note on Distributed Computing: http://citeseerx.ist.psu.edu/viewdoc/ summary?doi=10.1.1.41.7628 • On the problems with RPC: http://steve.vinoski.net/pdf/IEEE- Convenience_Over_Correctness.pdf • 8 Fallacies of Distributed Computing: https://blogs.oracle.com/jag/resource/ Fallacies.html • 6 Misconceptions of Distributed Computing: www.dsg.cs.tcd.ie/~vjcahill/ sigops98/papers/vogels.ps • Distributed Computing Systems—A Foundational Approach: http:// www.amazon.com/Programming-Distributed-Computing-Systems- Foundational/dp/0262018985 • Introduction to Reliable and Secure Distributed Programming: http:// www.distributedprogramming.net/ • Nice short overview on Distributed Systems: http://book.mixu.net/distsys/ • Meta list of distributed systems readings: https://gist.github.com/macintux/ 6227368 -
References ! • Actor Model • Great discussion between Erik
Meijer & Carl Hewitt or the essence of the Actor Model: http:// channel9.msdn.com/Shows/Going+Deep/Hewitt- Meijer-and-Szyperski-The-Actor-Model- everything-you-wanted-to-know-but-were-afraid- to-ask • Carl Hewitt’s 1973 paper defining the Actor Model: http://worrydream.com/refs/Hewitt- ActorModel.pdf • Gul Agha’s Doctoral Dissertation: https:// dspace.mit.edu/handle/1721.1/6952 -
References • FLP • Impossibility of Distributed Consensus with One
Faulty Process: http:// cs-www.cs.yale.edu/homes/arvind/cs425/doc/fischer.pdf • A Brief Tour of FLP: http://the-paper-trail.org/blog/a-brief-tour-of-flp- impossibility/ • CAP • Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services: http://lpd.epfl.ch/sgilbert/pubs/ BrewersConjecture-SigAct.pdf • You Can’t Sacrifice Partition Tolerance: http://codahale.com/you-cant- sacrifice-partition-tolerance/ • Linearizability: A Correctness Condition for Concurrent Objects: http:// courses.cs.vt.edu/~cs5204/fall07-kafura/Papers/TransactionalMemory/ Linearizability.pdf • CAP Twelve Years Later: How the "Rules" Have Changed: http:// www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have- changed • Consistency vs. Availability: http://www.infoq.com/news/2008/01/ consistency-vs-availability -
References • Time & Order • Post on the problems
with Last Write Wins in Riak: http:// aphyr.com/posts/285-call-me-maybe-riak • Time, Clocks, and the Ordering of Events in a Distributed System: http://research.microsoft.com/en-us/um/people/lamport/pubs/ time-clocks.pdf • Vector Clocks: http://zoo.cs.yale.edu/classes/cs426/2012/lab/ bib/fidge88timestamps.pdf • Failure Detection • Unreliable Failure Detectors for Reliable Distributed Systems: http://www.cs.utexas.edu/~lorenzo/corsi/cs380d/papers/p225- chandra.pdf • The ϕ Accrual Failure Detector: http://ddg.jaist.ac.jp/pub/HDY +04.pdf • SWIM Failure Detector: http://www.cs.cornell.edu/~asdas/ research/dsn02-swim.pdf • Practical Byzantine Fault Tolerance: http://www.pmg.lcs.mit.edu/ papers/osdi99.pdf -
References • Transactions • Jim Gray’s classic book: http://www.amazon.com/Transaction- Processing-Concepts-Techniques-Management/dp/1558601902
• Highly Available Transactions: Virtues and Limitations: http:// www.bailis.org/papers/hat-vldb2014.pdf • Bolt on Consistency: http://db.cs.berkeley.edu/papers/sigmod13- bolton.pdf • Calvin: Fast Distributed Transactions for Partitioned Database Systems: http://cs.yale.edu/homes/thomson/publications/calvin-sigmod12.pdf • Spanner: Google's Globally-Distributed Database: http:// research.google.com/archive/spanner.html • Life beyond Distributed Transactions: an Apostate’s Opinion https:// cs.brown.edu/courses/cs227/archives/2012/papers/weaker/ cidr07p15.pdf • Immutability Changes Everything—Pat Hellands talk at Ricon: http:// vimeo.com/52831373 • Unschackle Your Domain (Event Sourcing): http://www.infoq.com/ presentations/greg-young-unshackle-qcon08 • CQRS: http://martinfowler.com/bliki/CQRS.html -
References • Consensus • Paxos Made Simple: http://research.microsoft.com/en- us/um/people/lamport/pubs/paxos-simple.pdf •
Paxos Made Moderately Complex: http:// www.cs.cornell.edu/courses/cs7412/2011sp/paxos.pdf • A simple totally ordered broadcast protocol (ZAB): labs.yahoo.com/files/ladis08.pdf • In Search of an Understandable Consensus Algorithm (Raft): https://ramcloud.stanford.edu/wiki/download/ attachments/11370504/raft.pdf • Replication strategy comparison diagram: http:// snarfed.org/transactions_across_datacenters_io.html • Distributed Snapshots: Determining Global States of Distributed Systems: http://www.cs.swarthmore.edu/ ~newhall/readings/snapshots.pdf -
References • Eventual Consistency • Dynamo: Amazon’s Highly Available Key-value
Store: http://www.read.seas.harvard.edu/ ~kohler/class/cs239-w08/ decandia07dynamo.pdf • Consistency vs. Availability: http:// www.infoq.com/news/2008/01/consistency- vs-availability • Consistent Hashing and Random Trees: http:// thor.cs.ucsb.edu/~ravenben/papers/coreos/kll +97.pdf • PBS: Probabilistically Bounded Staleness: http://pbs.cs.berkeley.edu/ -
References • Epidemic Gossip • Chord: A Scalable Peer-to-peer Lookup
Service for Internet • Applications: http://pdos.csail.mit.edu/papers/chord:sigcomm01/ chord_sigcomm.pdf • Gossip-style Failure Detector: http://www.cs.cornell.edu/home/rvr/ papers/GossipFD.pdf • GEMS: http://www.hcs.ufl.edu/pubs/GEMS2005.pdf • Efficient Reconciliation and Flow Control for Anti-Entropy Protocols: http://www.cs.cornell.edu/home/rvr/papers/flowgossip.pdf • 2400 Akka nodes on GCE: http://typesafe.com/blog/running-a-2400- akka-nodes-cluster-on-google-compute-engine • Starting 1000 Akka nodes in 4 min: http://typesafe.com/blog/starting- up-a-1000-node-akka-cluster-in-4-minutes-on-google-compute- engine • Push Pull Gossiping: http://khambatti.com/mujtaba/ ArticlesAndPapers/pdpta03.pdf • SWIM: Scalable Weakly-consistent Infection-style Process Group Membership Protocol: http://www.cs.cornell.edu/~asdas/research/ dsn02-swim.pdf -
References • Conflict-Free Replicated Data Types (CRDTs) • A comprehensive
study of Convergent and Commutative Replicated Data Types: http://hal.upmc.fr/docs/ 00/55/55/88/PDF/techreport.pdf • Mark Shapiro talks about CRDTs at Microsoft: http:// research.microsoft.com/apps/video/dl.aspx?id=153540 • Akka CRDT project: https://github.com/jboner/akka-crdt • CALM • Dedalus: Datalog in Time and Space: http:// db.cs.berkeley.edu/papers/datalog2011-dedalus.pdf • CALM: http://www.cs.berkeley.edu/~palvaro/cidr11.pdf • Logic and Lattices for Distributed Programming: http:// db.cs.berkeley.edu/papers/UCB-lattice-tr.pdf • Bloom Language website: http://bloom-lang.net • Joe Hellerstein talks about CALM: http://vimeo.com/ 53904989 -
References • Akka Cluster • My Akka Cluster Implementation Notes:
https:// gist.github.com/jboner/7692270 • Akka Cluster Specification: http://doc.akka.io/docs/ akka/snapshot/common/cluster.html • Akka Cluster Docs: http://doc.akka.io/docs/akka/ snapshot/scala/cluster-usage.html • Akka Failure Detector Docs: http://doc.akka.io/docs/ akka/snapshot/scala/remoting.html#Failure_Detector • Akka Roadmap: https://docs.google.com/a/ typesafe.com/document/d/18W9- fKs55wiFNjXL9q50PYOnR7-nnsImzJqHOPPbM4E/ mobilebasic?pli=1&hl=en_US • Where Akka Came From: http://letitcrash.com/post/ 40599293211/where-akka-came-from