Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache...

19
Eventual Consistency != Hopeful Consistency Embracing Op:mis:c Design in the Persistence Layer

description

“Eventually consistent does not mean a day, minute or even second from now… in most cases, it is milliseconds!” This session will address Apache Cassandra’s tunable consistency model and cover how developers and companies should adopt a more Optimistic Software Design model.

Transcript of Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache...

Page 1: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

Eventual  Consistency  !=  Hopeful  Consistency  

Embracing  Op:mis:c  Design  in  the  Persistence  Layer  

Page 2: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

Who  am  I?  Christos  Kalantzis  Ne0lix  Inc.  Engineering  Manager  –  Cloud  Database  Engineering    @chriskalan  [email protected]  www.linkedin.com/in/christoskalantzis    

Page 3: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

C*  Replica:on  &  Consistency  Recap  

•  C*  is  eventually  Consistent  –  That  means  it  WILL  get  there…eventually  

•  Eventually  is  not:  – A  day  from  now  – A  minute  from  now  – A  second  from  now  

•  In  most  cases  it  is  milliseconds  

Page 4: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

•  C*  has  tunable  consistency  – All  

– Quorum  

– One  

C*  Replica:on  &  Consistency  Recap  

Page 5: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

Remember  When...?  •  In  early  2000s,  Read  was  scaled  out  by  adding  replica:on  Slaves  to  a  Master  DB.  

•  Writes  went  to  a  single  Master,  Reads  went  to  Slaves  

       

Page 6: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

Remember  When…?  •  Slaves  could  lose  transac:ons  

Page 7: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

Remember  When…?  •  No  “Repair”  func:on  

Page 8: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

Remember  When…?  •  We  trusted  it  •  We  s:ll  trust  it  

Page 9: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

C*  Consistency  Concerns  •  “I  want  high  consistency  in  my  Reads/Writes  just  like  I  had  in  my  RDBMS  setup”  –  You  never  really  had  it.  

•  “I  want  my  DB  to  catch  integrity  issues”  – We’ve  been  turning  FK  off  for  years!  

•  See  Rails,  Grails  &  other  MVC  frameworks  •  Can  I  trust  that  C*  will  replicate  my  data  when  wri:ng  at  CL  1”  

Page 10: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

NeHlix  Experiment  •  Created  a  mul:-­‐datacenter  C*  1.1.7  cluster  of  48  nodes  in  

each  DC  •  Put  load  on  C*  Cluster  

–  100K  total  opera:ons  per  second  (50  K  in  each  DC)  •  Wrote  1,000,000  records  at  CL1  in  one  DC  •  Read  same  1,000,000  records  at  CL1  in  other  DC  •  ALL  records  were  read  successfully  •  You  can  trust  it!  

Page 11: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

NeHlix  Experiment  

Page 12: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

Op:mis:c  vs.  Pessimis:c  Design  •  Pessimis:c  Design  – Design  with  high  consistency,  you  punish  your  users  99.9%  of  the  :me  •  Higher  consistency  =  higher  latency  •  Diminished  user  experience  

Page 13: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

Op:mis:c  vs.  Pessimis:c  Design  •  Op:mis:c  Design  – Trust  your  data  store  

•  Know  your  business  and  your  applica:on  – Always  ask  yourself,  is  it  really  that  important?  

•  Handle  edge  cases  through  con:ngency  plans  

Page 14: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

Low  Consistency  Example  1  

Page 15: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

Low  Consistency  Example  2  

Page 16: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

Hurdles  Faced  •  Engineers  are  stubborn!  –  1+1=2  ..  not  eventually  2  

•  Middle  management  is  scared  –  It’s  a  feat  you  convinced  them  to  use  C*  –  Now  you  got  to  convince  them  to  accept  low  consistency?  

•  Engaging  Product  team  to  implement  some  type  of  con:ngency  plans  

Page 17: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

How  to  Overcome  those  Hurdles  •  Prove  it  through  a  POC  •  Show  them  the  benefits  of  an  improved  user  experience  –  Its  all  about  the  user  

•  You  may  be  working  for  the  wrong  company  – We’re  hiring!  –  jobs.neHlix.com  

Page 18: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

Q&A  

Page 19: Cassandra Day SV 2014: A Netflix Experiment Eventual Consistency != Hopeful Consistency with Apache Cassandra

Thank  you!