roanoke code camp · 2017-03-14 · storing sessions in cassandra demo time with docker. this talk...
TRANSCRIPT
![Page 1: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/1.jpg)
High Availability Web Applications
with CassandraMay 17 2014
Roanoke Code Camp
Roanoke Code Camp • May 17, 2014
![Page 2: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/2.jpg)
About Me
Roanoke Code Camp • May 17, 2014
http://www.tildedave.com/
![Page 3: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/3.jpg)
This Talk
Roanoke Code Camp • May 17, 2014
What is Cassandra? How Does It Work?
Why Cassandra is Great For Web Applications
Storing Sessions in Cassandra
Demo Time with Docker
![Page 4: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/4.jpg)
This Talk
Roanoke Code Camp • May 17, 2014
What is Cassandra?
How Does It Work?
![Page 5: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/5.jpg)
Apache Cassandra
Roanoke Code Camp • May 10, 2014
“The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data. Cassandra's support for replicating across multiple datacenters is best-in-class, providing lower latency for your users and the peace of mind of knowing that you can survive regional outages.”
- http://cassandra.apache.org/
![Page 6: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/6.jpg)
● 2007 - Dynamo Paper (Amazon)
● 2008 - Facebook implementation open sourced
● February 2010: Graduates from Apache incubator
● April 2010: 0.6 released
● October 2011: 1.0 released
● September 2013: 2.0 released
A Quick History of Apache Cassandra
Roanoke Code Camp • May 17, 2014
![Page 7: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/7.jpg)
Cassandra Architecture
Roanoke Code Camp • May 17, 2014
Cassandra Chooses:
AvailabilityPartition Tolerance
![Page 8: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/8.jpg)
How Cassandra Handles Data
Roanoke Code Camp • May 17, 2014
Many copies of the data are stored throughout the cluster
Node 1
Node 4Node 5
Node 2
Node 3
I own data slices 1, 3, 5, 6, ...
I own data slices 1, 2, 4, 5, ...
I own data slices 1, 4, 6, ...
I own data slices 2, 3, 4, 6, ...
I own data slices 2, 3, 5, ...
![Page 9: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/9.jpg)
How Cassandra Handles Failure: Gossip
Roanoke Code Camp • May 17, 2014
Cluster is constantly communicating through gossip
Node 1
Node 4Node 5
Node 2
Node 3
![Page 10: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/10.jpg)
How Cassandra Handles Failure: Gossip
Roanoke Code Camp • May 17, 2014
Node failures are detected by the cluster
Node 1
Node 4Node 5
Node 2
Node 3
Haven’t heard from Node 5 in a while...
Haven’t heard from Node 5 in a while...
Haven’t heard from Node 5 in a while...
Haven’t heard from Node 5 in a while...
![Page 11: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/11.jpg)
How Cassandra Handles Failure: Gossip
Roanoke Code Camp • May 17, 2014
If a node is unavailable, cluster continues to function
Node 1
Node 4Node 5
Node 2
Node 3
I’ll try Node 5 later
I’ll try Node 5 later
I’ll try Node 5 later
I’ll try Node 5 later
![Page 12: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/12.jpg)
How Cassandra Handles Failure: Gossip
Roanoke Code Camp • May 17, 2014
On recovery, node gets “up to speed” with missed data (hints)
Node 1
Node 4Node 5
Node 2
Node 3
Here’s what you missed from slice 7
Here’s what you missed from slice 1
Here’s what you missed from slice 2
Here’s what you missed from slice 4
I’m back! What did I miss?
![Page 13: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/13.jpg)
How Cassandra Handles Failure: Gossip
Roanoke Code Camp • May 17, 2014
If a node has been gone too long, hints expire and it is broken. It needs to be repaired
Node 1
Node 4Node 5
Node 2
Node 3
???
???
???
???
I’m back! What did I miss?
![Page 14: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/14.jpg)
How Cassandra Handles Failure: Gossip
Roanoke Code Camp • May 17, 2014
Repairing a node removes data inconsistenciesUses a data structure called a Merkle Tree
Node 1
Node 4Node 5
Node 2
Node 3
Sending data for slice 7
Sending data for slice 1
Sending data for slice 2
Sending data for slice 4
I need to repair. Send me data
![Page 15: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/15.jpg)
How Cassandra Handles Data
Roanoke Code Camp • May 17, 2014
Writes propagate throughout the cluster
Node 1
Node 4Node 5
Node 2
Node 3
Updating slice 1 to v1350 with new data
Updating slice 1 to v1350 with new data
Updating slice 1 to v1350 with new data
I don’t own slice 1 but I know who does
I am writing to slice 1
![Page 16: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/16.jpg)
How Cassandra Handles Data
Roanoke Code Camp • May 17, 2014
Queries may reach a cluster that is inconsistentWhat to do here?
Node 1
Node 4Node 5
Node 2
Node 3
I have slice 1 v1350
I have slice 1 v1352
I have slice 1 v1349
I don’t own slice 1 but I know who does
Give me data from slice 1
![Page 17: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/17.jpg)
Querying with Consistency Level ONE
Roanoke Code Camp • May 17, 2014
Client specifies a consistency levelONE consistency only asks for one node to respond
Node 1
Node 4Node 5
Node 2
Node 3
Didn’t respond in time
Didn’t respond in time
Returning slice 1 v1349
I don’t own slice 1 but I know who does
Give me data from slice 1, consistency ONE
![Page 18: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/18.jpg)
Querying with Consistency Level QUORUM
Roanoke Code Camp • May 17, 2014
QUORUM requires a majority of nodes that own a slice to respond (here: 3 copies of slice 1, 2 must respond)
Node 1
Node 4Node 5
Node 2
Node 3
I have slice 1 v1350
I have slice 1 v1352
I have slice 1 v1349
I don’t own slice 1 but I know who does
Give me data from slice 1, consistency QUORUM
![Page 19: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/19.jpg)
Querying with Consistency Level QUORUM
Roanoke Code Camp • May 17, 2014
In the event of disagreement, client waits for gossip to update the cluster to agree
Node 1
Node 4Node 5
Node 2
Node 3
Updating slice 1 to v1352
You should have slice 1 v1352
I have slice 1 v1349
Still waiting for agreement
Give me data from slice 1, consistency QUORUM
![Page 20: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/20.jpg)
Querying with Consistency Level QUORUM
Roanoke Code Camp • May 17, 2014
Once a majority of nodes owning data agree, the query can be satisfied
Node 1
Node 4Node 5
Node 2
Node 3
Returning slice 1 v1352
Returning slice 1 v1352
I still have slice 1 v1349
Returning slice 1 v1352 from nodes 2 and 3
Give me data from slice 1, consistency QUORUM
![Page 21: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/21.jpg)
Querying with Consistency Level QUORUM
Roanoke Code Camp • May 17, 2014
If a consistency level cannot be satisfied, the query returns an error
Node 1
Node 4Node 5
Node 2
Node 3
Returning data from slice 1
Waiting for a majority of Node 2, 3, 5 to respond
Give me data from slice 1, consistency QUORUM
![Page 22: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/22.jpg)
Querying with Consistency Level QUORUM
Roanoke Code Camp • May 17, 2014
If a consistency level cannot be satisfied, the query errors out
Node 1
Node 4Node 5
Node 2
Node 3
Returning data from slice 1
QUORUM query cannot be satisfied: 2 nodes down
Give me data from slice 1, consistency QUORUM
![Page 23: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/23.jpg)
Cassandra Consistency Levels
Roanoke Code Camp • May 17, 2014
Queries make a tradeoff between availability and consistency
ONE: One node respondsQUORUM: A majority of nodes responsible for the data respondsLOCAL_QUORUM: Majority of nodes in datacenter agreeEACH_QUOURM: Majority of nodes in every datacenter agreeALL: Every node responsible for the data responds
![Page 24: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/24.jpg)
Cassandra Column Families
Roanoke Code Camp • May 17, 2014
Cassandra stores data in Column Families
You can only make queries that match an indexIn SQL-terms, every column is nullable.No joins. Denormalize your data
CREATE COLUMNFAMILY IF NOT EXISTS sessions (
session_key text,
session_data text,
PRIMARY KEY (session_key)
)
![Page 25: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/25.jpg)
Querying Cassandra: CQL3
Roanoke Code Camp • May 17, 2014
CQL3 is a “SQL-like” language for executing queries
INSERT INTO api_cache
(identity_provider, ddi, username, api_path, json,
last_modified)
VALUES
(%(identity_provider)s, %(ddi)s, %(username)s,
%(api_path)s, %(json)s, %(last_modified)s)
USING TTL {ttl}
![Page 26: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/26.jpg)
Cassandra is Great
Roanoke Code Camp • May 17, 2014
Why Cassandra is Great For Web Applications
![Page 27: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/27.jpg)
Our Use Case - Rackspace Cloud Control Panel
Roanoke Code Camp • May 17, 2014
Rackspace Cloud Control Panel: mycloud.rackspace.com
Manage your hosted Cloud Resources
Our main needs:● uptime ● disaster recovery (handling loss of a datacenter)
We are deployed in three datacenters
![Page 28: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/28.jpg)
Cloud Deployments
Roanoke Code Camp • May 17, 2014
Deployed on Rackspace Public Cloud
Cloud deployments must assume failure as part of their architecture● EC2 Instance Retirement● Scheduled network maintenances● Datacenter/Availability Zone outages
DNS is our primary tool to handle datacenter outages
![Page 29: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/29.jpg)
MyCloud Architecture
Roanoke Code Camp • May 17, 2014
NS records delegate DNS control for mycloud.rackspace.com to F5 Global Traffic Managers
ORD
SYDDFW
For you, mycloud is 50.57.202.82
For you, mycloud is 192.237.192.123
For you, mycloud is119.9.8.175
![Page 30: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/30.jpg)
MyCloud Architecture
Roanoke Code Camp • May 17, 2014
On failure customers are directed to a different install
ORD
SYDDFW
For you, mycloud is 50.57.202.82
For you, mycloud is119.9.8.175
![Page 31: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/31.jpg)
Datacenter Affinity
Roanoke Code Camp • May 17, 2014
5 Cassandra nodes per data center
Because of DNS, clients “stick” to their datacenter
Client stickiness allows us to avoid inconsistency issues with Cassandra LOCAL_QUORUM● If you write to our databases in Dallas, you
immediately read from Dallas● Data propagates to other datacenters in the
background
![Page 32: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/32.jpg)
Traditional Session Storage
Roanoke Code Camp • May 17, 2014
In contrast, web applications that use traditional session storage...
![Page 33: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/33.jpg)
Traditional Web Applications
Roanoke Code Camp • May 17, 2014
1) No global session storage, users sticky to one server● Cannot survive loss of individual server● Cannot restart or upgrade server without downtime
![Page 34: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/34.jpg)
Traditional Web Applications
Roanoke Code Camp • May 17, 2014
2) Session storage in single-master SQL system● Cannot reboot MySQL master without downtime● Cannot take MySQL master out of rotation without
manual master failover● Cannot survive loss of a datacenter
![Page 35: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/35.jpg)
Traditional Web Applications
Roanoke Code Camp • May 17, 2014
3) Session storage in Multi-Master SQL● Must manually restart replication if it fails● Does not elegantly scale to n masters
![Page 36: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/36.jpg)
Why Cassandra is better
Roanoke Code Camp • May 17, 2014
Webapp Sessions in Cassandra + Delegated DNS means:● Direct users to any datacenter without downtime● Any datacenter can fail and your web application
continues to function
![Page 37: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/37.jpg)
Why Cassandra is better
Roanoke Code Camp • May 17, 2014
Since switching to Cassandra:● 100% uptime● Many manually-induced datacenter failovers because
of …○ Cloud Networking issues○ Per-DC nightly scheduled maintenance○ Upgrading libraries○ Upgrading Cassandra (yes)
![Page 38: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/38.jpg)
Cassandra is Great
Roanoke Code Camp • May 17, 2014
Some of Our Pains with Cassandra
![Page 39: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/39.jpg)
Pains with Cassandra: Cross-Ocean Install
Roanoke Code Camp • May 17, 2014
Bug in Cassandra in high-latency situations meant some nodes refused to acknowledge other nodes as up
Hints built up
Repairs fail to complete, alerts go off
We upgraded to Cassandra 2.0.5
![Page 40: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/40.jpg)
Pains with Cassandra: Driver Startup Time
Roanoke Code Camp • May 17, 2014
We stop and recreate every thread on code deployment
up to 8 code deployments a day
Bug in Cassandra caused this recreation to be really slow
e.g. 10+ secondse.g. health checks failede.g. alerts flapped
![Page 41: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/41.jpg)
Pains with Cassandra: Driver Startup Time
Roanoke Code Camp • May 17, 2014
Cassandra 2.0.7 (and working closely with a Cassandra contributor) saved us
![Page 42: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/42.jpg)
Pains with Cassandra: Private Networks
Roanoke Code Camp • May 17, 2014
Cassandra nodes gossip on public network
Queries connect on private network
Private network has different failure characteristics than public network
Cassandra uptime doesn’t save you if Cassandra can still gossip
![Page 43: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/43.jpg)
Pains with Cassandra: Private Networks
Roanoke Code Camp • May 17, 2014
We use a thread-based approach in our application
If a thread tries to talk over PrivateNet and fails enough it gets “poisoned”
Some threads healthy, some threads not
Health checks flap
Customers see errors, Datacenters fail over, etc.
![Page 44: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/44.jpg)
Integrating Cassandra Sessions with Your Web Application
Roanoke Code Camp • May 17, 2014
Demo Using Web Application Sessions with Cassandra
![Page 45: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/45.jpg)
Integrating Cassandra Sessions with Your Web Application
Roanoke Code Camp • May 17, 2014
Example: Sessions with Flask (Python Web Framework)
flask.sessions.SessionInterface
Requires you to implement● open_session(app, request)● save_session(app, session, response)
Quick Cassandra: https://github.com/nicolasff/docker-cassandra
![Page 46: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/46.jpg)
Integrating Cassandra Sessions with Your Web Application
Roanoke Code Camp • May 17, 2014
Demo code is up on Github
Key queries:
SELECT * FROM sessions WHERE session_key = %s
DELETE FROM sessions WHERE session_key = %s
INSERT INTO sessions (session_key, session_data) VALUES (%s, %s) USING TTL %s
![Page 47: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/47.jpg)
Final Thoughts
Roanoke Code Camp • May 17, 2014
Final Thoughts
![Page 48: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/48.jpg)
Final Thoughts
Roanoke Code Camp • May 17, 2014
Cassandra is great
I would encourage all multi-DC applications that need “always on” guarantees to use it
Being able to fail datacenters over without downtime is transformative for a team
![Page 49: Roanoke Code Camp · 2017-03-14 · Storing Sessions in Cassandra Demo Time with Docker. This Talk Roanoke Code Camp • May 17, 2014 What is Cassandra? How Does It Work? Apache Cassandra](https://reader034.vdocument.in/reader034/viewer/2022050314/5f77257a6e318f7e0b5aa526/html5/thumbnails/49.jpg)
Demo Time
Roanoke Code Camp • May 17, 2014
Demo Time With Docker