cassandra day chicago 2015: cassandra consistency & tolerance (a morality guide for databases)

49
Cassandra: Consistency & Tolerance (a morality guide for databases) Matt Kennedy, Architect @thetweetofmatt

Upload: planet-cassandra

Post on 15-Jul-2015

260 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

Cassandra: Consistency & Tolerance (a morality guide for databases)Matt Kennedy, Architect

@thetweetofmatt

Page 2: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 2

Page 3: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 3

Page 4: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 4

Page 5: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 5

Page 6: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 6

Page 7: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 7

Page 8: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 8

Page 9: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 9

Page 10: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 10

Page 11: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 11

Page 12: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 12

?

Page 13: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 13

Georgetown

American

20 minutes

Worth the wait?

Page 14: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 14

Georgetown

American

Page 15: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 15

Page 16: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

Lessons?

•  High Availability means:•  Have to maintain some redundancy•  Need to distribute your stuff

•  Distributed Stuff means:•  Need to accommodate unreliable networks•  Need to have strategies for different path costs•  Plan for outright failures•  Cooperation!

Also, don’t underestimate a squirrel with a Jesuit education.

©2014 DataStax Confidential. Do not distribute without consent. 16

Page 17: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 17

Page 18: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 18

Eventual Consistency

Page 19: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

Meh.

©2014 DataStax Confidential. Do not distribute without consent. 19

http://nekrocodile-izumi.deviantart.com/art/Lazy-college-student-322186707

Page 20: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 20

Page 21: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 21

Page 22: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 22

Page 23: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

Consistency vs. Consistency

©2014 DataStax Confidential. Do not distribute without consent. 23

Page 24: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 24

Page 25: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

Tunable Consistency & High Availability

©2014 DataStax Confidential. Do not distribute without consent. 25

Example assumes replication factor = 3

write

read

Page 26: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

Quorum-write, RF=5

©2014 DataStax Confidential. Do not distribute without consent. 26

Client

6-node cluster, rf=5 OK!

Page 27: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

Quorum read RF=5

©2014 DataStax Confidential. Do not distribute without consent. 27

Client

6-node cluster, rf=5

00101010

00101010

00101010 00101010

? ?

Read value: 00101010

Page 28: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 28

Page 29: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

Linearizable Consistency

•  AKA:•  Compare & Set•  Check & Set•  Lightweight Transactions•  CQL “IF” Statements

•  Uses Paxos•  Can specify local datacenter or all datacenters•  (CASSANDRA-5797)

©2014 DataStax Confidential. Do not distribute without consent. 29

Page 30: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

Linearizable Consistency

•  Put X in the database if X is not already in the database

•  Set foo=bar if foo=baz

•  Set foo=bar if boo=faz

©2014 DataStax Confidential. Do not distribute without consent. 30

Page 31: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 31

MONSTER MASH!!!

Alice Bob Create “Stinky”

C*

Create “Stinky”

Insert “Stinky” Insert “Stinky” Quorum insert

Quorum insert

Now Bob owns “Stinky” and Alice doesn’t know why she can’t see the monster she just made

Page 32: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 32

MONSTER MASH!!!

Alice Bob Create “Stinky”

C*

Create “Stinky”

Insert “Stinky” Insert “Stinky”

LWT Insert LWT insert

NO!

Page 33: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

Consistency & Cassandra

• Tunable Consistency

• Linearizable Consistency

• Your App can tell C* what it needs

©2014 DataStax Confidential. Do not distribute without consent. 33

Page 34: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

THIS IS IMPORTANT

•  The Consistency Mechanisms are King•  Cassandra’s core strengths…•  High Availability•  Tolerance of node failures•  Tolerance of datacenter failures•  Tolerance of network failures between datacenters

•  All due to the Consistency Mechanisms •  Cassandra isn’t Cassandra without Eventual

Consistency

©2014 DataStax Confidential. Do not distribute without consent. 34

Page 35: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

Consistency is a Key Value!

•  Get it? Key-Value?•  It’s a NoSQL joke.

•  Always-on Big Data demands multi-region DCs•  Multi-region DCs must face the reality of network partitions

•  Eventual Consistency enables applications built on Cassandra to do what they need to do correctly and flexibly while remaining constantly available.

©2014 DataStax Confidential. Do not distribute without consent. 35

Page 36: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

Thank You

©2014 DataStax Confidential. Do not distribute without consent.

Page 37: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

Tunable Consistency & High Availability

©2014 DataStax Confidential. Do not distribute without consent. 37

write

read

Example assumes replication factor = 3

1.

2.

write

read

3.

Options 1 & 2 achieve strong consistency at the expense of availability. Option 3 requires only 2 replicas on write and 2 on read, so it achieves high availability & strong consistency.

Page 38: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

Eventual Consistency The Netflix Experiment

•  “Eventual Consistency != Hopeful Consistency”•  Netflix, big C* user, performed an experiment

©2014 DataStax Confidential. Do not distribute without consent. 38

http://planetcassandra.org/blog/post/a-netflix-experiment-eventual-consistency-hopeful-consistency-by-christos-kalantzis/

Page 39: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

©2014 DataStax Confidential. Do not distribute without consent. 39

Page 40: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

C* Datacenters A Single Cluster

©2014 DataStax Confidential. Do not distribute without consent. 40

One Datacenter

Peer-to-peer ring of nodes

Page 41: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

Datacenters can go offline…

©2014 DataStax Confidential. Do not distribute without consent. 41

Page 42: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

For a variety of reasons

©2014 DataStax Confidential. Do not distribute without consent. 42

Page 43: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

C* Datacenters A Single Cluster

©2014 DataStax Confidential. Do not distribute without consent. 43

One Datacenter

Peer-to-peer ring of nodes

Page 44: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

C* Datacenters What happens when I lose one?

Los Angeles

©2014 DataStax Confidential. Do not distribute without consent. 44

Chicago

New York

Page 45: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

C* Datacenters What is possible?

Los Angeles

©2014 DataStax Confidential. Do not distribute without consent. 45

Chicago

New York

Cloud

Page 46: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

C* Datacenters Cloud Deployments

©2014 DataStax Confidential. Do not distribute without consent. 46

Availability Zone 1

AWS

Page 47: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

C* Datacenters Cloud Deployments

©2014 DataStax Confidential. Do not distribute without consent. 47

Availability Zone 1

Availability Zone 2

AWS

Page 48: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

C* Datacenters Cloud Deployments

©2014 DataStax Confidential. Do not distribute without consent. 48

Availability Zone 1

Availability Zone 2

Google Compute

Engine

AWS

Page 49: Cassandra Day Chicago 2015: Cassandra Consistency & Tolerance (A Morality Guide for Databases)

C* Datacenters Cloud Deployments

©2014 DataStax Confidential. Do not distribute without consent. 49

Off-Cloud Migration

On-Prem

Start in Cloud